2011-09-26 16 views
5

Estoy trabajando con una pantalla táctil y el uso de controladores integrados de Windows 7 (ya que nunca me incitó a instalar ninguno). funciona bien, excepto por un pequeño problema. Cuando toco la pantalla, no enviará WM_LBUTTONDOWN hasta que mueva mi dedo fuera de la pantalla. Parece hacer esto para determinar si tengo intención de mantener presionada para emular WM_RBUTTONDOWN o no. (Además, traté de desactivar el gesto de emulación de retención, pero nunca se desactiva en la práctica.)WM_TOUCH no se envía inmediatamente con el evento de toque hacia abajo

Así que pensé que simplemente recibiría los mensajes WM_TOUCH. Y descubrí que WM_TOUCH (0x240) tampoco se envía a mi ventana hasta que muevo mi dedo fuera de la pantalla. Creo que eso derrota el propósito de WM_TOUCH por completo.

Tanto antes como después de registrar para recibir mensajes WM_TOUCH, he recibido tres mensajes inmediatamente después de tocar la pantalla:

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

0x011A es WM_GESTURENOTIFY, que mi código es dar respuesta a (tal vez no estoy respondiendo correctamente?) Respondo con una respuesta estándar (usando código de ejemplo de MS) para recibir notificaciones completas.

Otra cosa, comencé a obtener WM_TOUCH cuando me registro para mensajes táctiles, pero continúo recibiendo el mensaje WM_GESTURENOTIFY también. De acuerdo con la documentación de MS, una vez que me registro para obtener WM_TOUCH, ya no recibo mensajes de gestos.

Si alguien me puede decir cómo recibir mensajes WM_TOUCH inmediatamente (por ejemplo, cuando recibo los mensajes WM_GESTURENOTIFY), y no después de que levante el dedo de la pantalla táctil, lo agradecería mucho.

Respuesta

0

Control hacia fuera este tutorial sobre eventos táctiles:

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

Lo que se quiere utilizar es la función RegisterTouchWindow, como tal:

RegisterTouchWindow(handle, 0); 

Windows le enviará ahora WM_TOUCH mensajes en lugar de WM_GESTURE mensajes a su ventana. Tenga en cuenta que tendrá que compilar contra Windows SDK versión 7.0 o posterior para que esto funcione.

+0

Esto es lo que hago ahora. En efecto, uso WM_GESTURE para XP y WM_TOUCH para Win7. Esto agrega una arruga, pero los resultados son muy buenos. – user574771

1

casi me dieron el mismo problema y lo resolvió mediante el uso de:

RegisterTouchWindow (CVent, TWF_WANTPALM);

Cuestiones relacionadas