Las manos que juegan con la computadora, la API táctil de dos dedos del sistema Windows7 revela que

  

Windows 7 tiene algunas características geniales que los sistemas XP y Vista no tienen, como la vista previa del grupo de ventanas, los íconos del escritorio ocultos rápidamente, agitar otras ventanas ... estas geniales ¿Cómo se diseña la función? ¿Cómo los programas personales que desarrollamos utilizan estas funciones para sorprender a los usuarios?

En el "Informe de minorías", Tomang usó directamente dos dedos para operar el programa en la pantalla táctil, lo cual fue incómodo. Esta función también es compatible con Win 7. Mientras haya un dispositivo táctil, también podemos usar ambas manos para jugar con la computadora en Win 7. El toque de dos dedos, como el zoom, el zoom de dos dedos, el giro de dos dedos y otros efectos se pueden implementar en Win 7.

Dos gestos de uso común

1. Gestos de zoom

Los gestos de zoom se utilizan para acercar o alejar la interfaz, y se utilizan a menudo en programas como la exploración de imágenes y la lectura de artículos. El gesto del zoom de dos dedos se muestra en la Figura 1: los dos dedos se colocan juntos en el formulario, uno hacia arriba y el otro hacia abajo, esto se acerca, los dos dedos se colocan en el formulario por separado, y los dos puntos se deslizan en el medio, luego Alejar

El programa debe reconocer este gesto. El primer paso es enviar un mensaje del dedo a la pantalla. En el segundo paso, la distancia se calcula de acuerdo con las coordenadas de los dos dedos, y la distancia entre los dos dedos se compara de acuerdo con un valor empírico para obtener que los dos dedos estén separados o los dos dedos estén juntos. En el tercer paso, las coordenadas del punto del dedo se pueden capturar en tiempo real de acuerdo con un temporizador para calcular la dirección de movimiento y la velocidad, y además, se puede determinar si los dos dedos están en reversa o en deslizamiento opuesto.

2. Gestos de panorámica

Los gestos de panorámica se utilizan a menudo para la navegación. Por ejemplo, en un visor de imágenes, use el gesto de paneo a la izquierda para navegar al anterior y el gesto de paneo para navegar a la siguiente imagen. El gesto de panorámica se muestra en la Figura 2: ambos dedos se deslizan hacia la izquierda o hacia la derecha. ¿Cómo distinguir si el usuario quiere cambiar la posición de la imagen o pasar la página? La aceleración debe ser utilizada aquí.

Puede capturar las coordenadas de los dedos en tiempo real en un temporizador, calcular la velocidad y la aceleración, y compararla con la aceleración a través de un valor empírico. Cuando la aceleración es relativamente grande, puede considerarse como páginas que dan vuelta, de lo contrario, se está arrastrando. Mover Por supuesto, esto no es suficiente. Al arrastrar, debe juzgar más a fondo si alcanza el límite del programa. Si alcanza el límite, también se considera que pasa la página. Para el procesamiento de páginas giratorias, el desplazamiento hacia la izquierda o el borde izquierdo se considera la página anterior.

La API táctil de dos dedos revela

El núcleo del toque de dos dedos es colocar los datos táctiles originales en el modelo de movimiento para calcular el gesto del usuario. Los datos táctiles en bruto se pueden obtener del mensaje WM_TOUCH. Los gestos de zoom y paneo son reconocidos por WM_TOUCH.

Paso 1: comprobar el hardware multitáctil

Use la API de GetSystemMetrics aquí para preparar el hardware:

BYTE digitizerStatus = (BYTE) GetSystemMetrics (SM_DIGITIZER);
if ((digitizerStatus &(0x80 + 0x40)) == 0) {
//No se detectó ningún dispositivo multitáctil o el dispositivo no está listo
}
//Compruebe la compatibilidad del dispositivo Puntos de contacto, se debe tener en cuenta que Win 7 actualmente admite 2 puntos de contacto mejor
BYTE nInputs = (BYTE) GetSystemMetrics (SM_MAXIMUMTOUCHES);

Paso 2: cambie al mensaje táctil original < Br>

De forma predeterminada, Win 7 proporciona un mensaje WM_GESTURE (gesto) de forma predeterminada. Este gesto es un gesto que el sistema reconoce en función de los datos táctiles originales. La función de API RegisterTouchWindow permite que el sistema devuelva el mensaje de entrada táctil original WM_TOUCH. El código del núcleo:

RegisterTouchWindow (hWnd, 0)) //hwnd es la ventana actual Manejar

Paso 3: obtenga los datos táctiles en bruto

Use la API GetTouchInputInfo para obtener los datos táctiles originales, código del núcleo:

GetTouchInputInfo ((HTOUCHINPUT) lParam, numInputs, ti, sizeof ( TOUCHINPUT)))
numInputs es una variable declarada previamente para almacenar varios puntos de contacto. Si 5 dedos se deslizan simultáneamente en la pantalla, entonces numInputs es 5.
ti es una estructura TOUCHINPUT que contiene las coordenadas X e Y del contacto, el tiempo de ocurrencia y el tipo de toque (similar a la presión del mouse, el movimiento del mouse, la liberación del mouse, etc.).

para (unsigned int i = 0; i < numInputs; ++ i) {//Loop según el punto de entrada táctil
if (ti [i] .dwFlags &TOUCHEVENTF_DOWN) {
OnTouchDownHandler (hWnd, ti [i]); //entregado a la función de prensa de contacto
} else if (ti [i] .dwFlags &TOUCHEVENTF_MOVE) {
OnTouchMoveHandler (hWnd, ti [i]); //Entregado a la función de movimiento de contacto que procesa
} else if (ti [i] .dwFlags &TOUCHEVENTF_UP) {
OnTouchUpHandler (hWnd, ti [i]);} //Entregado a la función de liberación de contactos
}

La función de presionar, mover, soltar, etc. del contacto es en realidad un modelo de simulación de movimiento. En el modelo, necesitamos generar varias curvas de movimiento para la trayectoria del contacto y calcular El azimut, la velocidad, la aceleración normal, la aceleración tangencial, etc. de cada punto se extraen para identificar gestos específicos. Consejo

: la forma más fácil de obtener soporte multitáctil es usar la función de reconocimiento de gestos de Win 7, principalmente mediante la siguiente API:
GetSystemMetrics, que se usa para verificar si hay dispositivos de hardware multitáctiles Existir y listo.
GetGestureInfo, utilizado para obtener el tipo de gesto y los datos relacionados.

Copyright © Conocimiento de Windows All Rights Reserved