Compartir a través de


Información general acerca de la arquitectura

Esta introducción a la arquitectura proporciona contexto para Windows Touch API para tecnologías de tableta y táctil y explica cómo encaja en la arquitectura de Windows 7 más grande.

Mensajes para la entrada y los gestos de Windows Touch

Las características de mensajería para Windows Touch se habilitan escuchando e interpretando mensajes durante la ejecución. En la ilustración siguiente se muestra cómo se generan los mensajes a partir del hardware y se envían a las aplicaciones mediante Windows 7.

Ilustración en la que se muestra cómo Windows 7 envía mensajes del hardware multitáctil a una aplicación

En la columna situada más a la izquierda de la ilustración, el hardware táctil recibe la entrada de un usuario. A continuación, un controlador se comunica entre el hardware y el sistema operativo. A continuación, el sistema operativo genera un mensaje de WM_TOUCH o WM_GESTURE que, a continuación, se envía al HWND de una aplicación. A continuación, la aplicación actualiza la interfaz de usuario según la información encapsulada en el mensaje.

Las aplicaciones reciben gestos de forma predeterminada. A menos que una aplicación se registre para los mensajes de entrada de Windows Touch con la función RegisterTouchWindow , Las notificaciones de gestos (mensajes WM_GESTURE ) se crean mediante Windows y se envían a esa ventana de aplicación. Si una ventana de aplicación se registra para recibir mensajes táctiles, las notificaciones de entrada de Windows Touch (WM_TOUCH mensajes) se envían a esa ventana de aplicación. Los mensajes táctiles y gestos de Windows son expansos en el sentido de que después de realizar un toque o de un gesto comienza en una ventana de la aplicación, todos los mensajes se envían a esa aplicación hasta que se completa el gesto o se completa la función táctil principal.

Para obtener compatibilidad heredada, Windows interpreta WM_GESTURE mensajes si se propagan y, a continuación, enviará o POST los mensajes adecuados que se asignarán al gesto. Para evitar interrumpir la compatibilidad heredada, asegúrese de reenviar WM_GESTURE mensajes mediante DefWindowProc. Puede encontrar más información sobre la compatibilidad heredada en la sección Información general sobre gestos táctiles de Windows.

Manipulaciones e inercia

Los programadores de Windows Touch deben ser capaces de interpretar gestos de varios orígenes de una manera que sea significativa para el gesto que tiene lugar. Microsoft proporciona la API de manipulación para realizar estos cálculos. Las manipulaciones son esencialmente gestos con valores asociados a ellos que describen todo el gesto. Después de conectar los datos de entrada al procesador de manipulación, puede recuperar información pertinente para la acción que realiza el usuario en el objeto. En la ilustración siguiente se muestra una manera de usar manipulaciones.

Ilustración en la que se muestran los mensajes táctiles de Windows pasados al procesador de manipulación de un objeto, que controla los eventos con la interfaz -imanipulationevents.

En la parte superior izquierda de la ilustración, el usuario ha tocado la pantalla, que crea mensajes táctiles. Estos mensajes contienen una coordenada x y una coordenada y que se usan para determinar el objeto que está en el foco. El objeto en el foco contiene un procesador de manipulación. A continuación, en el mensaje de WM_TOUCH con la marca TOUCHEVENTF_UP , se selecciona el objeto en el foco del usuario, se hace referencia al procesador de manipulación y se envía el mensaje al procesador de manipulación. Los mensajes de WM_TOUCH posteriores asociados a este contacto se envían al procesador de manipulación hasta que se recibe el mensaje WM_TOUCH con la marca TOUCHEVENTF_UP y se desreferencia el objeto seleccionado. En la sección inferior derecha de la ilustración, se usa un receptor de eventos de manipulación que implementa la interfaz _IManipulationEvents para controlar los eventos de manipulación, que se generan mientras se crean los mensajes táctiles. El receptor de eventos puede realizar actualizaciones en la interfaz en función de los eventos de manipulación mientras se producen.

En las aplicaciones de Windows Touch, es habitual incorporar física simple para que los objetos lleguen sin problemas a una parada, en lugar de detenerse repentinamente cuando ya no se tocan. Microsoft proporciona la API de inercia para realizar los cálculos de esta física simple para que la aplicación pueda comportarse de forma similar a otras aplicaciones. Esto también le ahorra el esfuerzo necesario para crear una sólida funcionalidad física. En la ilustración siguiente se muestra cómo puede usar la inercia.

Ilustración en la que se muestran los mensajes táctiles de Windows pasados a la interfaz iinertiaprocessor de un objeto, que genera eventos con la interfaz -imanipulationevents

Tenga en cuenta las similitudes entre la inercia y la manipulación. La única diferencia entre los dos es que, en el caso de inercia, los mensajes interpretados se entregan a un procesador de inercia en lugar de a un procesador de manipulación y el procesador de inercia genera los eventos. En la parte superior izquierda de la ilustración, en el mensaje WM_TOUCH con la marca TOUCHEVENTF_UP , los mensajes táctiles se usan para identificar un objeto en el foco que contiene un procesador de inercia y un procesador de manipulación. Los mensajes de WM_TOUCH posteriores se envían al procesador de manipulación y el procesador de manipulación realiza actualizaciones en la interfaz de usuario de la aplicación. Una vez completada la manipulación, los valores de velocidad de la manipulación se usan para configurar un procesador de inercia. Como se muestra en la columna central, se llama al método Process o ProcessTime en la interfaz IInertiaProcessor mediante un temporizador u otro bucle en un subproceso independiente hasta que las llamadas indican que el procesador ha terminado de procesarse. Aunque se realizan estas llamadas, se generan eventos de manipulación, que se controlan mediante un receptor de eventos de manipulación basado en la interfaz _IManipulationEvents . En la sección inferior derecha de la ilustración, este receptor de eventos realiza actualizaciones en la interfaz de usuario de la aplicación en función de los eventos de manipulación cuando se producen a través de controladores de eventos en el receptor de eventos.

Guía de programación