2011-09-26 14 views
5

Sto lavorando con uno schermo tattile e utilizzando i driver incorporati di Windows 7 (poiché non mi ha mai richiesto di installarne uno). funziona bene, tranne per un piccolo problema. Quando tocco lo schermo, non invierà il WM_LBUTTONDOWN finché non avrò spostato il dito dallo schermo. Sembra che faccia questo per determinare se intendo tenere premuto per emulare WM_RBUTTONDOWN o no. (Inoltre, ho provato a disabilitare il gesto di emulazione premuto, ma non si disabilita mai in pratica.)WM_TOUCH non viene inviato immediatamente con evento touch down

Quindi ho pensato di ricevere solo i messaggi WM_TOUCH. E ho trovato che WM_TOUCH (0x240) non viene anche inviato alla mia finestra finché non muovo il dito dallo schermo. Ho pensato che sconfigge del tutto lo scopo di WM_TOUCH.

Sia prima che dopo la registrazione per ricevere i messaggi WM_TOUCH, ho ricevuto tre messaggi immediatamente dopo toccando lo schermo:

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

0x011A è WM_GESTURENOTIFY, che il mio codice è quello di rispondere alle (forse sto non risponde in modo corretto?). Rispondo con una risposta standard (utilizzando codice di esempio da MS) per ricevere notifiche complete.

Un'altra cosa, ho iniziato a ricevere WM_TOUCH quando mi registro per i messaggi touch, ma continuo a ricevere anche il messaggio WM_GESTURENOTIFY. Secondo la documentazione di MS, una volta registrato per ottenere WM_TOUCH, non ricevo più messaggi di gesture.

Se qualcuno può dirmi come ottenere immediatamente i messaggi WM_TOUCH (ad es. Quando ricevo i messaggi WM_GESTURENOTIFY), e non dopo aver lasciato il dito fuori dal touch ghree, lo apprezzerei molto.

risposta

0

Dai un'occhiata a questo tutorial su eventi touch:

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

Ciò che si vuole utilizzare è la funzione RegisterTouchWindow, come ad esempio:

RegisterTouchWindow(handle, 0); 

Windows invia una WM_TOUCH messaggi invece di WM_GESTURE messaggi alla tua finestra. Tieni presente che dovrai eseguire la compilazione di Windows SDK versione 7.0 o successiva affinché funzioni.

+0

Questo è quello che faccio ora. In effetti, io uso WM_GESTURE per XP e WM_TOUCH per Win7. Questo aggiunge una piega, ma i risultati sono molto buoni. – user574771

1

ho quasi avuto lo stesso problema e risolto utilizzando:

RegisterTouchWindow (hWnd, TWF_WANTPALM);

Problemi correlati