3

我编写了一个当前处理来自多个鼠标设备的点击的应用程序。

我使用了这个项目并进行了修改以处理与键盘相对的鼠标点击。

这工作正常,但是现在我需要知道如果我的应用程序已经处理了点击事件,是否有办法抑制它。该应用程序是一个问答游戏,因此其想法是问答大师将拥有(并且仍然能够使用)1 只鼠标,而其他参赛者将拥有自己的鼠标(作为蜂鸣器)。因此,当他们嗡嗡作响时,我不希望鼠标单击事件在操作系统(或至少此应用程序)中触发。

这个概念是对void WndProc(ref Message message)的熟悉覆盖,因此当我不希望触发点击事件时,我尝试不调用base.WndProc(ref Message),但这没有奏效。

有人可以在这里指出我正确的方向吗?

我应该沿着窗户挂钩路线走吗?我看过这个,但我似乎无法弄清楚如何单独连接到每个鼠标设备。

任何帮助将不胜感激。

编辑:

这是一个 Windows 窗体 UI 项目,而不是 WPF。所以微软的 MultiPoint SDK将无法工作。

4

1 回答 1

2

解决这个问题的方法不是 WndProc,而是 PreFilterMessage()。通过在消息到达表单之前拦截消息,您可以将它们从消息泵中删除,从而导致它们永远无法到达被单击的控件。这也适用于表单中的子控件。

我回答了这个问题并在以下问题中发布了完整的来源:

C# 获取鼠标句柄 (GetRawInputDeviceInfo)

于 2013-01-30T14:42:18.200 回答