开发者

WM_TOUCH is not immediately sent with touch down event

开发者 https://www.devze.com 2023-04-08 00:20 出处:网络
I am working with a touch screen and using Windows 7 built in drivers (as it never prompted me to install any). it works fine, except for one small issue. When I touch the screen, it will not send the

I am working with a touch screen and using Windows 7 built in drivers (as it never prompted me to install any). it works fine, except for one small issue. When I touch the screen, it will not send the WM_LBUTTONDOWN until I move my finger off the screen. It appears to do this to determine if I intend to hold down to emulate WM_RBUTTONDOWN or not. (Also, I tried to disable the hold down emulate gesture, but it never disables in practice.)

So I thought I would just receive the WM_TOUCH messages. And I found that WM_TOUCH (0x240) is also not sent to my window until I move my finger off the screen. I sort of thought that defeats the purpose of WM_TOUCH altogether.

Both before and after registering to receive WM_TOUCH messages, I received three messages immediately upon touching the screen:

1. Send: 0x02CC (undocumented tablet mes开发者_如何学运维sages)
2. Post: 0x011B (undocumented)
3. Send: 0x011A (WM_GESTURENOTIFY)

0x011A is WM_GESTURENOTIFY, which my code is to respond to (perhaps I am not responding correctly?). I reply with a standard response (using sample code from MS) to receive full notifications.

Another thing, I began getting WM_TOUCH when I register for touch messages, but I continue to get the WM_GESTURENOTIFY message as well. According to the MS documentation, once I register to get WM_TOUCH, I no longer get gesture messages.

If anyone can tell me how to get WM_TOUCH messages immediately (e.g. when I am getting the WM_GESTURENOTIFY messages), and not after I let my finger up off the touch scree, I would appreciate it much.


Check out this tutorial on touch events:

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

What you want to use is the RegisterTouchWindow function, as such:

RegisterTouchWindow(handle, 0);

Windows will now send WM_TOUCH messages instead of WM_GESTURE messages to your window. Keep in mind that you will have to compile against Windows SDK version 7.0 or newer for this to work.


I almost got the same issue and solved it by using :

RegisterTouchWindow( hWnd, TWF_WANTPALM );

0

精彩评论

暂无评论...
验证码 换一张
取 消