WM_TOUCH不会立即发送触地事件

时间:2011-09-26 19:37:33

标签: windows-7 touch

我正在使用触摸屏并使用Windows 7内置驱动程序(因为它从未促使我安装任何)。它工作正常,除了一个小问题。当我触摸屏幕时,它不会发送WM_LBUTTONDOWN,直到我将手指从屏幕上移开。它似乎这样做是为了确定我是否打算按住以模拟WM_RBUTTONDOWN。 (另外,我尝试禁用按住模拟手势,但它在实践中从不禁用。)

所以我想我会收到WM_TOUCH消息。我发现WM_TOUCH(0x240)也没有发送到我的窗口,直到我的手指离开屏幕。我认为这完全违背了WM_TOUCH的目的。

在注册接收WM_TOUCH消息之前和之后,我在触摸屏幕后立即收到三条消息:

1. Send: 0x02CC (undocumented tablet messages)
2. Post: 0x011B (undocumented)
3. Send: 0x011A (WM_GESTURENOTIFY)

0x011A是WM_GESTURENOTIFY,我的代码要响应(也许我没有正确回答?)。我回复标准响应(使用MS的示例代码)来接收完整的通知。

另一件事,我在注册触摸消息时开始获取WM_TOUCH,但我仍然继续获取WM_GESTURENOTIFY消息。根据MS文档,一旦我注册获得WM_TOUCH,我就不再收到手势消息了。

如果有人能告诉我如何立即获取WM_TOUCH消息(例如,当我收到WM_GESTURENOTIFY消息时),而不是在我的手指离开触摸屏之后,我会非常感激。

2 个答案:

答案 0 :(得分:1)

我差点遇到同样的问题并使用以下方法解决了这个问题:

RegisterTouchWindow(hWnd,TWF_WANTPALM);

答案 1 :(得分:0)

查看有关触摸事件的本教程:

http://msdn.microsoft.com/en-us/gg464991

您要使用的是RegisterTouchWindow功能,因此:

RegisterTouchWindow(handle, 0);

Windows现在会向您的窗口发送WM_TOUCH条消息,而不是WM_GESTURE条消息。请记住,您必须针对Windows SDK 7.0或更高版本进行编译才能实现此目的。