2011-09-26 59 views
5

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

所以我想我只会收到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消息时),而不是在我让手指离开触摸屏之后,我将非常感激。

回答

0

退房本教程上的触摸事件:

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

你想用什么RegisterTouchWindow功能,例如:

RegisterTouchWindow(handle, 0); 

Windows将现在发送WM_TOUCH的消息,而不是WM_GESTURE消息到你的窗口。请记住,您必须针对Windows SDK版本7.0或更高版本进行编译才能正常工作。

+0

这就是我现在要做的。实际上,我使用XP的WM_GESTURE和Win7的WM_TOUCH。这增加了皱纹,但结果非常好。 – user574771

1

我几乎得到了相同的问题,通过解决它:

RegisterTouchWindow(HWND,TWF_WANTPALM);