Hablando de la pantalla táctil de Win7, API

  

Win7 tiene algunas funciones geniales que no están disponibles en los sistemas XP y Vista, como la vista previa del grupo de ventanas, los íconos de escritorio ocultos rápidamente, agitar otras ventanas y hellip; … cómo están estas funciones geniales Diseñado? ¿Cómo los programas personales que desarrollamos utilizan estas funciones para sorprender a los usuarios?

En el "Informe de minorías", Tomgo 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, siempre que haya un dispositivo táctil, también podemos usar las manos para jugar con la computadora en Win7. 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 tipos de gestos táctiles utilizados comúnmente por Win7

1. Gestos de zoom

Los gestos de zoom se utilizan para acercar o alejar la interfaz, a menudo en programas como la exploración de imágenes y la lectura de artículos. Utilizado 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 pasar las páginas, 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 a la izquierda o la llegada al 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 GetSystemMetrics aquí para preparar el hardware:

BYTE digitizerStatus = (BYTE) GetSystemMetrics (SM_DIGITIZER); Si ((digitizerStatus &(0x80 + 0x40)) == 0) {//No detectar el dispositivo multitáctil o el dispositivo no está listo} //Compruebe que el dispositivo admite varios puntos de contacto, debe prestar atención al par Win 7 actual 2 puntos de contacto se admiten mejor BYTE nInputs = (BYTE) GetSystemMetrics (SM_MAXIMUMTOUCHES);

Paso 2: cambie al mensaje táctil original

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

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

Paso 3: obtenga los datos táctiles en bruto

obtenga los datos táctiles originales mediante la API GetTouchInputInfo, 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 de acuerdo con 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 que procesa} else if (ti [i] .dwFlags &TOUCHEVENTF_MOVE) {OnTouchMoveHandler (hWnd, ti [i]); //entregado al procesamiento de la función de movimiento de contacto} de lo contrario, (ti [i] .dwFlags &TOUCHEVENTF_UP) {OnTouchUpHandler (hWnd, ti [i]);} //Entregado para procesar la función de liberación de contacto}

Aquí se presiona, mueve, libera el contacto, etc. La función es en realidad un modelo de simulación de movimiento. En el modelo, debemos 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 para identificar Dar 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 utilizando la siguiente API: GetSystemMetrics, que se usa para verificar si existen dispositivos de hardware multitáctiles y están listos . GetGestureInfo para obtener tipos de gestos y datos relacionados

Copyright © Conocimiento de Windows All Rights Reserved