2011-09-26 107 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);