Compartilhar via


Linha do tempo de mensagens do mouse e eventos do sistema

Quando uma determinada ação é executada, os eventos do sistema (prefixados com ISG_) são enviados e recebidos quase instantaneamente pelo aplicativo. As mensagens do mouse (prefixadas com WM_) são enviadas quando a ação é executada e são recebidas pelo aplicativo após o tempo necessário para que o evento seja processado pelo serviço de mensagens do Microsoft Windows. Além disso, CursorDown e CursorUp são eventos de caneta recebidos do hardware da caneta. Eles são enviados quando a caneta do tablet toca na tela e quando ela é levantada da tela, respectivamente.

Eventos de caneta e mensagens do mouse não são sincronizados. Não há nenhuma garantia de que as mensagens de mouse correspondentes e os eventos de caneta ocorrerão em uma ordem específica. O gráfico a seguir mostra a sequência esperada, mas nem sempre previsível, de eventos do sistema e do mouse que são enviados. Observe no gráfico que os eventos do mouse são atrasados quando eventos de gesto do sistema são detectados.

sequência esperada de eventos do sistema e do mouse para entrada de caneta

Considerações importantes sobre implementação

Considere o seguinte ao desenvolver para mensagens de mouse e eventos do sistema:

  • Os eventos de caneta e as mensagens do mouse são enviados para um aplicativo, independentemente de a caneta ou o mouse ser usado.
  • Se o aplicativo escuta mensagens de caneta e mouse, é difícil prever a relação das mensagens e, portanto, o comportamento eventual. Eventos de caneta e mensagens do mouse não são sincronizados. Não há garantia de que mensagens de mouse correspondentes e eventos de caneta (como WM_LBUTTONDOWN e ISG_TAP ou WM_LBUTTONDBLCLK e ISG_DBLTAP) ocorrerão em uma ordem específica. A relação entre essas mensagens é complexa.
  • É recomendável não misturar e combinar eventos de mouse e caneta no mesmo recurso de aplicativo. Por exemplo, um recurso de aplicativo que responde a CursorDown e MouseUp pode não se comportar conforme o esperado agora ou com versões futuras do SDK do Tablet PC.
  • Para a sequência de eventos hold through, se o usuário arrastar a caneta do tablet antes da sequência ser concluída, os eventos enviados corresponderão ao arrastar à esquerda. Por exemplo, quando o arrastar é iniciado, ISG_DRAG e WM_LBUTTONDOWN são enviados. Quando a caneta é eventualmente levantada, CursorUp e WM_LBUTTONUP são enviados. O evento de gesto do sistema pode não ser acionado imediatamente porque deve determinar que tipo de evento está ocorrendo.
  • Um toque duplo com uma caneta tablet geralmente é menos preciso do que um clique duplo com um mouse. Isso vem da natureza inerente de executar um toque duplo com uma caneta tablet. Como o usuário deve levantar a caneta do tablet para executar um toque duplo, o tempo entre toques geralmente é maior do que o tempo correspondente entre cliques de um clique duplo. Além disso, é provável que os dois toques da caneta tablet ocorram em coordenadas de tela mais distantes do que aquelas para os dois cliques do mouse. Para acomodar isso, o Windows XP Tablet PC Edition tem configurações para a distância temporal e espacial entre os dois toques de um toque duplo que são separados das configurações do mouse para um clique duplo. Essas configurações podem ser ajustadas em Configurações de Tablet e Caneta em Painel de Controle.

Devido a essas considerações, os aplicativos devem ouvir apenas um conjunto de mensagens em vez de ambas. Se você estiver criando um aplicativo habilitado para caneta, ouça apenas as mensagens do sistema e da caneta. Essas mensagens são previsíveis e funcionam bem com a caneta tablet. Se você estiver criando um aplicativo que não esteja habilitado para caneta, ouça apenas as mensagens do mouse.