Visão geral da arquitetura

Essa visão geral de arquitetura fornece contexto para o Windows Touch API para Tablet e Touch Technologies e explica como ela se encaixa na arquitetura maior Windows 7.

Mensagens para Windows entrada de toque e gestos

Os recursos de mensagens para Windows Touch são habilitados ouvindo e interpretando mensagens durante a execução. A ilustração a seguir mostra como as mensagens são geradas a partir do hardware e enviadas para aplicativos por Windows 7.

illustration showing how windows 7 sends messages from multitouch hardware to an application

Na coluna mais à esquerda da ilustração, o hardware sensível ao toque recebe a entrada de um usuário. Em seguida, um driver se comunica entre o hardware e o sistema operacional. Em seguida, o sistema operacional gera uma mensagem de WM_TOUCH ou WM_GESTURE que, em seguida, é enviada para o HWND de um aplicativo. Em seguida, o aplicativo atualiza a interface do usuário, considerando as informações encapsuladas na mensagem.

Os aplicativos recebem gestos por padrão. A menos que um aplicativo se registre para mensagens de entrada Windows Touch com a função RegisterTouchWindow, as notificações para gestos (mensagens WM_GESTURE) são criadas por Windows e enviadas para essa janela do aplicativo. Se uma janela do aplicativo se registrar para receber mensagens de toque, as notificações para Windows entrada touch (WM_TOUCH mensagens) serão enviadas para essa janela do aplicativo. Windows Mensagens de toque e gesto são gananciosas no sentido de que depois que um toque é feito ou um gesto começa em uma janela do aplicativo, todas as mensagens são enviadas para esse aplicativo até que o gesto seja concluído ou o toque primário seja concluído.

Para suporte herdado, Windows interpreta WM_GESTURE mensagens se elas estiverem em bolhas e enviarão ou POSTARão mensagens apropriadas que são mapeadas para o gesto. Para evitar a interrupção do suporte herdado, encaminhe WM_GESTURE mensagens usando DefWindowProc. Mais informações sobre o suporte herdado podem ser encontradas na seção Windows Visão geral dos Gestos de Toque.

Manipulações e inércia

Windows Programadores touch devem ser capazes de interpretar gestos de várias fontes de uma maneira significativa para o gesto que está ocorrendo. A Microsoft fornece a API de manipulação para executar esses cálculos. As manipulações são essencialmente gestos com valores associados a eles que descrevem todo o gesto. Depois de conectar os dados de entrada ao processador de manipulação, você pode recuperar informações pertinentes à ação que o usuário faz no objeto. A figura a seguir mostra uma maneira de usar manipulações.

illustration showing windows touch messages passed to an object's manipulation processor, which handles events with the -imanipulationevents interface

No canto superior esquerdo da ilustração, o usuário tocou na tela, o que cria mensagens de toque. Essas mensagens contêm uma coordenada x e uma coordenada y que são usadas para determinar o objeto que está em foco. O objeto em foco contém um processador de manipulação. Em seguida, na mensagem de WM_TOUCH com o sinalizador TOUCHEVENTF_UP , o objeto no foco do usuário é selecionado, o processador de manipulação é referenciado e a mensagem é enviada ao processador de manipulação. As mensagens WM_TOUCH subsequentes associadas a esse contato são enviadas ao processador de manipulação até que a mensagem WM_TOUCH com o sinalizador TOUCHEVENTF_UP seja recebida e o objeto selecionado seja desreferenciado. Na seção inferior direita da ilustração, um coletor de eventos de manipulação que implementa a interface _IManipulationEvents é usado para lidar com os eventos de manipulação, que são gerados enquanto as mensagens de toque estão sendo criadas. O coletor de eventos pode executar atualizações na interface com base nos eventos de manipulação enquanto eles ocorrem.

Em aplicativos Windows Touch, é comum incorporar física simples para que os objetos parem sem problemas, em vez de parar abruptamente quando não estão mais sendo tocados. A Microsoft fornece a API de Inércia para executar os cálculos para essas físicas simples para que seu aplicativo possa se comportar de maneira semelhante a outros aplicativos. Isso também salva o esforço necessário para criar uma funcionalidade física robusta. A figura a seguir mostra como você pode usar a inércia.

illustration showing windows touch messages passed to an object's iinertiaprocessor interface, which raises events with -imanipulationevents interface

Observe as semelhanças entre inércia e manipulação. A única diferença entre os dois é que, no caso de inércia, as mensagens interpretadas são entregues a um processador de inércia em vez de um processador de manipulação e o processador de inércia gera os eventos. No canto superior esquerdo da ilustração, na mensagem WM_TOUCH com o sinalizador TOUCHEVENTF_UP , as mensagens de toque são usadas para identificar um objeto em foco que contém um processador de inércia e um processador de manipulação. As mensagens WM_TOUCH subsequentes são enviadas ao processador de manipulação e o processador de manipulação executa atualizações para a interface do usuário do aplicativo. Após a conclusão da manipulação, os valores de velocidade da manipulação são usados para configurar um processador de inércia. Conforme ilustrado na coluna intermediária, o método Process or ProcessTime é chamado na interface IInertiaProcessor usando um temporizador ou outro loop em um thread separado até que as chamadas indiquem que o processador terminou de processar. Embora essas chamadas sejam feitas, eventos de manipulação são gerados, que são tratados por um coletor de eventos de manipulação com base na interface _IManipulationEvents . Na seção inferior direita da ilustração, esse coletor de eventos executa atualizações na interface do usuário do aplicativo com base em eventos de manipulação quando ocorrem por meio de manipuladores de eventos no coletor de eventos.

Guia de programação