Eventos del sistema y mensajes del mouse

La aplicación incorpora un diseño y un uso óptimos del lápiz para tabletas mediante el envío de mensajes de mouse y eventos del sistema de Microsoft Windows. Las aplicaciones reciben ambos conjuntos de eventos para cada movimiento o acción del lápiz. A continuación, la aplicación elige el evento adecuado que se usará en función del contexto de la acción. Los mensajes del mouse de Windows funcionan bien para apuntar y seleccionar actividades, y debe usarlos para las actividades que implican la interacción con los elementos de la interfaz de usuario (UI). Los eventos de lápiz funcionan bien para aplicaciones de lápiz en tiempo real, acciones de lápiz y escritura a mano.

Nota:

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.

Distinguir la entrada del lápiz del mouse y la entrada táctil

Cuando la aplicación recibe un mensaje del mouse (por ejemplo, WM_LBUTTONDOWN), puede llamar a la función GetMessageExtraInfo para evaluar si el mensaje se originó desde un lápiz o un dispositivo del mouse.

El valor devuelto porGetMessageExtraInfo debe ser comparado con 0xFFFFFF00, y luego con 0xFF515700. Las definiciones siguientes pueden hacer esto más claro:

#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE

Si la comparación es verdadera, entonces este mensaje de mouse ha sido generado por un lápiz o una pantalla táctil de Tablet PC. En todos los demás casos, puede suponer que un dispositivo del mouse generó este mensaje.

Los 8 bits inferiores devueltos de GetMessageExtraInfo son variables. De esos bits, 7 (los 7 inferiores, enmascarados por 0x7F) se usan para representar el identificador de cursor, cero para el mouse o un valor variable para el identificador del lápiz. Además, en Windows Vista, el octavo bit, enmascarado por 0x80, se usa para diferenciar la entrada táctil de la entrada del lápiz (0 = lápiz, 1 = entrada táctil).

Consulte Entrada de dispositivo de puntero y Entrada táctil para obtener más información.

Gestos del sistema admitidos

En la tabla siguiente se enumeran los gestos del sistema que se incluyen actualmente en Windows XP Tablet PC Edition, se detallan las acciones de lápiz y los eventos del sistema correspondientes, y se muestra cómo se relacionan con las acciones tradicionales del mouse.

Gesto de lápiz Acción del mouse Descripción del gesto de lápiz Mensajes de eventos Mensajes del mouse Comportamientos en aplicaciones basadas en Windows
Pulsar
Clic con el botón izquierdo
Pulse la pantalla una vez con el lápiz.
ISG_TAP enviado cuando se levanta el lápiz.
WM_LBUTTONDOWN y WM_LBUTTONUP enviados al levantar el lápiz.
Elija comando en el menú o la barra de herramientas, realice la acción si el comando ha elegido, establezca el punto de inserción (IP), muestre los comentarios de selección.
Pulsar dos veces
Doble clic
Pulse la pantalla dos veces en sucesión rápida.
ISG_DOUBLETAP enviado al segundo toque (abajo). ISG_TAP evento enviado en la primera pulsación.
WM_LBUTTONDBLCLK enviado al segundo toque (abajo). WM_LBUTTONDOWN y WM_LBUTTONUP enviado en la primera pulsación (arriba) como para una sola pulsación.
Seleccione word, abra el archivo o la carpeta.
Pulsar y sostener
Haga clic con el botón secundario en
Pulse la pantalla y mantenga presionado hasta que aparezca un icono del mouse y a continuación, levante el lápiz para mostrar un menú contextual. Una aplicación podría optar por realizar una acción diferente de mostrar un menú contextual cuando se levanta el lápiz.
ISG_HOLDENTER enviado cuando el lápiz ha estado lo suficientemente fuera de servicio. ISG_RIGHTTAP enviar cuando se levanta el lápiz y haga clic con el botón derecho.
WM_RBUTTONDOWN y WM_RBUTTONUP enviados cuando se hace clic con el botón derecho (cuando se levanta el lápiz).
Mostrar menú contextual.
Retener
Clic con el botón izquierdo
Pulse la pantalla y manténgala pulsada hasta que aparezca y desaparezca el icono del mouse. Es probable que los usuarios lo hagan cuando presionan y mantienen pulsado el recuento de accidentes y quieren volver a pulsar.
ISG_TAP enviado cuando se levanta el lápiz.
WM_LBUTTONDOWN y WM_LBUTTONUP enviados cuando se levanta el lápiz.
Haga clic con el botón izquierdo durante mucho tiempo. No existe ningún equivalente del mouse. Se trata de una reserva para cuando un usuario realiza la pulsación y la suspensión durante mucho tiempo. El evento vuelve a ser un toque.
Arrastrar
Arrastrar a la izquierda
Pulse la pantalla para seleccionar el objeto que se va a mover y a continuación, arrastre después de seleccionar el objeto.
ISG_DRAG enviado cuando se inicia la arrastrar.
WM_LBUTTONDOWN enviado cuando se inicia la arrastrar, seguido de una serie de mensajes de movimiento del mouse y seguido de un evento de WM_LBUTTONUP.
Arrastre y seleccione, como en Microsoft Word al comenzar con una dirección IP; seleccionar varias palabras; arrastre, como al arrastrar un objeto en Windows; Desplazamiento.
Mantenga presionada la tecla seguida de una arrastrar
Arrastrar a la derecha
Pulse la pantalla para seleccionar el objeto que se va a mover. Mantenga presionado hasta que aparezca el icono del mouse y a continuación, arrástrelo para mover el objeto. Levante el lápiz para mostrar un menú contextual.
ISG_HOLDENTER enviado cuando el lápiz ha estado inactivo durante algún tiempo. ISG_RIGHTDRAG enviar cuando se inicia la arrastrar.
WM_RBUTTONDOWN enviado cuando se inicia el arrastre, seguido de una serie de mensajes de movimiento del mouse, seguido de un evento WM_RBUTTONUP.
Arrastre, como al arrastrar un objeto o una selección seguido de un menú contextual.
Mantener el puntero del lápiz
Mantener el puntero del mouse
Mantenga el lápiz estable a una pequeña distancia de la pantalla.
ISG_HOVERENTER evento enviado inicialmente. Cuando se completa el intervalo de desplazamiento, ISG_HOVERLEAVEis enviado.
No hay ningún mensaje equivalente del mouse.
Mostrar información sobre herramientas, efectos de sustitución y otros comportamientos de desplazamiento del mouse.
Vibración en el aire
Mostrar Panel de entrada de Tablet PC. No hay equivalente del mouse.
Mueva el lápiz rápidamente de lado a lado, manteniendo la punta encima, pero dentro del intervalo de, la pantalla.
El evento no se pasa a la aplicación.
No hay ningún mensaje equivalente del mouse.
Nuevo, específico de tableta PC.

 

Especificar interacciones táctiles y lápiz

De manera predeterminada, la ventana recibirá todos los eventos de gestos del sistema y usará el modelo de interacción predeterminado. Algunas partes de este modelo pueden interferir con la aplicación, por lo que puede deshabilitarlas de forma selectiva respondiendo al Mensaje de WM_TABLET_QUERYSYSTEMGESTURESTATUS en su WndProc.