Eventos do sistema e mensagens do mouse

Seu aplicativo incorpora o design e o uso ideais da caneta eletrônica enviando mensagens do mouse do Microsoft Windows e eventos do sistema. Os aplicativos recebem ambos os conjuntos de eventos para cada movimento ou ação da caneta. Em seguida, o aplicativo escolhe o evento apropriado a ser usado com base no contexto da ação. As mensagens do mouse do Windows funcionam bem para apontar e selecionar atividades, e você deve usá-las para atividades que envolvam interação com elementos da interface do usuário (UI). Os eventos de caneta funcionam bem para aplicação de tinta em tempo real, ações de caneta e manuscrito.

Observação

Os eventos de caneta e as mensagens do mouse são enviados para um aplicativo, independentemente de a caneta ou o mouse serem usados.

Distinguindo a entrada de caneta do mouse e do toque

Quando seu aplicativo recebe uma mensagem do mouse (como WM_LBUTTONDOWN), ele pode chamar a função GetMessageExtraInfo para avaliar se a mensagem se originou de uma caneta ou um dispositivo de mouse.

O valor retornado de GetMessageExtraInfo precisa ser verificado em relação a 0xFFFFFF00 e, em seguida, comparado com 0xFF515700. As seguintes definições podem tornar isso mais claro:

#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE

Se a comparação for verdadeira, essa mensagem do mouse foi gerada por uma caneta ou tela sensível ao toque do Tablet PC. Em todos os outros casos, você pode assumir que essa mensagem foi gerada por um dispositivo de mouse.

Os 8 bits inferiores retornados de GetMessageExtraInfo são variáveis. Desses bits, 7 (os 7 inferiores, mascarados por 0x7F) são usados para representar o ID do cursor, zero para o mouse ou um valor variável para o ID da caneta. Além disso, no Windows Vista, o oitavo bit, mascarado por 0x80, é usado para diferenciar a entrada por toque da entrada por caneta (0 = caneta, 1 = toque).

Consulte Entrada de dispositivo de ponteiro e Entrada por toque para obter mais informações.

Gestos do sistema suportados

A tabela a seguir lista os gestos do sistema atualmente incluídos no Windows XP Tablet PC Edition, detalha as ações de caneta e os eventos do sistema correspondentes e mostra como eles se relacionam com as ações tradicionais do mouse.

Gesto com caneta Ação do mouse Descrição do gesto da caneta Mensagens de eventos Mensagens do mouse Comportamentos em aplicativos baseados no Windows
Toque
Clique com o botão esquerdo do mouse
Toque na tela uma vez com a caneta.
ISG_TAP enviado quando a caneta é levantada.
WM_LBUTTONDOWN e WM_LBUTTONUP enviados quando a caneta foi levantada.
Escolha o comando no menu ou na barra de ferramentas, execute uma ação se o comando for escolhido, defina o ponto de inserção (IP), mostre o feedback da seleção.
Toque duas vezes
Clicar duas vezes
Toque duas vezes na tela em rápida sucessão.
ISG_DOUBLETAP enviado no segundo toque (para baixo). ISG_TAP evento enviado no primeiro toque.
WM_LBUTTONDBLCLK enviado no segundo toque (para baixo). WM_LBUTTONDOWN e WM_LBUTTONUP enviados no primeiro toque (para cima) como para um único toque.
Selecione palavra, abra arquivo ou pasta.
Pressionar e segurar
Clique com o botão direito em
Toque na tela e segure até que um ícone do mouse apareça e, em seguida, levante a caneta para exibir um menu de atalho. Um aplicativo pode optar por executar uma ação diferente de mostrar um menu do botão direito do mouse quando a caneta é levantada.
ISG_HOLDENTER enviado quando a caneta estiver parada por tempo suficiente. ISG_RIGHTTAP enviado quando a caneta é levantada e ocorre o clique com o botão direito do mouse.
WM_RBUTTONDOWN e WM_RBUTTONUP enviados quando ocorre o clique direito do mouse (quando a caneta é levantada).
Mostrar menu de atalho.
Retenção
Clique com o botão esquerdo do mouse
Toque na tela e segure até que o ícone do mouse apareça e desapareça. É provável que os usuários façam isso quando pressionarem e segurarem acidentalmente e quiserem reverter para apenas tocar.
ISG_TAP enviado quando a caneta é levantada.
WM_LBUTTONDOWN e WM_LBUTTONUP enviados quando a caneta é levantada.
Clique com o botão esquerdo do mouse por um longo tempo. Não existe equivalente de rato. Este é um fallback para quando um usuário executa pressionar e segurar por um longo tempo. O evento volta a ser um toque.
Arrastar
Arraste para a esquerda
Toque na tela para selecionar o objeto a ser movido e arraste depois que o objeto for selecionado.
ISG_DRAG enviado quando o arrastar é iniciado.
WM_LBUTTONDOWN enviado quando o arrastar é iniciado, seguido por uma série de mensagens de movimentação do mouse e seguido por um evento WM_LBUTTONUP.
Arraste-selecione, como no Microsoft Word ao iniciar com um IP; selecionar várias palavras; arrastar, como ao arrastar um objeto no Windows; rolagem.
Pressione e segure seguido de um arraste
Arraste com o botão direito do mouse
Toque na tela para selecionar o objeto a ser movido. Mantenha pressionado até que o ícone do mouse apareça e arraste para mover o objeto. Levante a caneta para exibir um menu de atalho.
ISG_HOLDENTER enviado quando a caneta está fora do ar há algum tempo. ISG_RIGHTDRAG enviado quando o arrastar é iniciado.
WM_RBUTTONDOWN enviado quando o arrastar é iniciado, seguido por uma série de mensagens de movimentação do mouse, seguidas por um evento WM_RBUTTONUP.
Arraste, como ao arrastar um objeto ou seleção seguido de um menu de contexto.
Passe o mouse sobre a caneta
Passe o mouse
Mantenha a caneta firme a uma pequena distância da tela.
ISG_HOVERENTER evento enviado inicialmente. Quando o intervalo de foco for concluído, ISG_HOVERLEAVEis enviado.
Nenhuma mensagem equivalente do mouse.
Mostrar dica de ferramenta, efeitos de sobreposição e outros comportamentos de foco do mouse.
Agitação no ar
Mostrar Painel de entrada do Tablet PC. Nenhum mouse equivalente.
Mova a caneta rapidamente de um lado para o outro, segurando a ponta acima, mas dentro do alcance da tela.
O evento não é passado para o aplicativo.
Nenhuma mensagem equivalente do mouse.
Novo, específico para Tablet PC.

 

Especificando interações de caneta e toque

Por padrão, sua janela receberá todos os eventos de gesto do sistema e usará o modelo de interação padrão. Algumas partes desse modelo podem interferir no seu aplicativo, portanto, você pode desativá-las seletivamente respondendo à WM_TABLET_QUERYSYSTEMGESTURESTATUS Mensagem no seu WndProc.