Escala de tiempo de mensajes del mouse y eventos del sistema
Cuando se realiza una acción determinada, la aplicación envía y recibe de forma casi instantánea los eventos del sistema (con el prefijo ISG_). Los mensajes del mouse (con el prefijo WM_) se envían cuando se realiza la acción y la recibe la aplicación después del tiempo necesario para que el servicio de mensajería de Microsoft Windows procese el evento. Además, CursorDown y CursorUp son eventos de lápiz que se reciben del hardware del lápiz. Se envían cuando el lápiz de tableta toca la pantalla y cuando se levanta de la pantalla, respectivamente.
Los eventos de lápiz y los mensajes del mouse no están sincronizados. No hay ninguna garantía de que los mensajes de mouse y los eventos de lápiz correspondientes se produzcan en un orden determinado. En el gráfico siguiente se muestran los eventos esperados, pero no siempre predecibles, de sistema y mouse que se envían. Observe en el gráfico que los eventos del mouse se retrasan cuando se detectan eventos de gestos del sistema.
Consideraciones importantes sobre la implementación
Tenga en cuenta lo siguiente al desarrollar para mensajes del mouse y eventos del sistema:
- Tanto los eventos de lápiz como los mensajes del mouse se envían a una aplicación, independientemente de si se usa el lápiz o el mouse.
- Si la aplicación escucha mensajes de lápiz y mouse, es difícil predecir la relación de los mensajes y, por tanto, el comportamiento final. Los eventos de lápiz y los mensajes del mouse no están sincronizados. No hay ninguna garantía de que los mensajes de mouse y los eventos de lápiz correspondientes (como WM_LBUTTONDOWN y ISG_TAP, o WM_LBUTTONDBLCLK y ISG_DBLTAP) se produzcan en un orden determinado. La relación entre estos mensajes es compleja.
- Se recomienda no mezclar y hacer coincidir los eventos de mouse y lápiz en la misma característica de aplicación. Por ejemplo, es posible que una característica de aplicación que responda a CursorDown y MouseUp no se comporten como se esperaba ahora o con versiones futuras del SDK de Pc tablet.
- Para la suspensión a través de la secuencia de eventos, si el usuario arrastra el lápiz de tableta antes de que se complete la secuencia, los eventos que se envían corresponden a arrastrar a la izquierda. Por ejemplo, cuando se inicia la arrastrar, se envían ISG_DRAG y WM_LBUTTONDOWN. Cuando el lápiz se levanta finalmente, se envían cursorup y WM_LBUTTONUP. Es posible que el evento de gesto del sistema no se active inmediatamente porque debe determinar qué tipo de evento se está produciendo.
- Una pulsación doble con un lápiz para tableta suele ser menos precisa que un doble clic con un mouse. Esto proviene de la naturaleza inherente de realizar una pulsación doble con un lápiz para tabletas. Dado que el usuario debe levantar el lápiz de la tableta para realizar una pulsación doble, el tiempo entre pulsaciones suele ser mayor que el tiempo correspondiente entre clics de un doble clic. Además, es probable que las dos pulsaciones del lápiz de tableta se produzcan en coordenadas de pantalla que están más separadas que las de los dos clics del mouse. Para dar cabida a esto, Windows XP Tablet PC Edition tiene ajustes para la distancia temporal y espacial entre las dos pulsaciones de una pulsación doble que son independientes de la configuración del mouse para un doble clic. Esta configuración se puede ajustar en Configuración de tableta y lápiz en Panel de control.
Debido a estas consideraciones, las aplicaciones deben escuchar solo un conjunto de mensajes en lugar de ambos. Si va a compilar una aplicación habilitada para lápiz, escuche solo los mensajes del sistema y lápiz. Estos mensajes son predecibles y funcionan bien con el lápiz de tableta. Si va a compilar una aplicación que no está habilitada para el lápiz, escuche solo los mensajes del mouse.