Visão geral da arquitetura

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

Mensagens para Entrada e Gestos do Windows Touch

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 de hardware e enviadas para aplicativos pelo Windows 7.

ilustração mostrando como o Windows 7 envia mensagens de hardware multitouch para um aplicativo

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 registre mensagens de entrada do Windows Touch com a função RegisterTouchWindow , as notificações de gestos (WM_GESTURE mensagens) são criadas pelo Windows e enviadas para essa janela do aplicativo. Se um aplicativo Janela se registrar para receber mensagens de toque, as notificações de entrada do Windows Touch (WM_TOUCH mensagens) serão enviadas para essa janela do aplicativo. As mensagens de gesto e toque do Windows são greedy 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 obter suporte herdado, o Windows interpretará WM_GESTURE mensagens se elas estiverem em bolhas e, em seguida, enviará ou POSTARá 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 Visão geral dos Gestos de Toque do Windows.

Manipulações e inércia

Os programadores do Windows 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.

ilustração mostrando mensagens de toque do Windows passadas para o processador de manipulação de um objeto, que manipula eventos com a interface -imanipulationevents

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 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 de WM_TOUCH 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 cheguem suavemente a uma parada, em vez de parar abruptamente quando eles não estão mais sendo tocados. A Microsoft fornece a API 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.

ilustração mostrando mensagens de toque do Windows passadas para a interface iinertiaprocessor de um objeto, que gera eventos com a interface -imanipulationevents

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 na 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 ou ProcessTime é chamado na interface IInertiaProcessor usando um temporizador ou outro loop em um thread separado até que as chamadas indiquem que o processador terminou o processamento. 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