Suporte à entrada por toque no Windows Vista
A partir do Windows Vista, o Tablet PC Technology tem suporte para entrada por toque em tablets com digitalizadores compatíveis com toque. Esse suporte inclui uma interface do usuário aprimorada para ajudar no direcionamento e no comando do Windows ao usar um dedo para entrada.
Suporte ao Digitalizador de Toque
Entrada de caneta e toque não exclusiva
Não suponha que a entrada por toque e caneta seja mutuamente exclusiva nos aplicativos InkCollector, InkOverlay e RealTimeStylus .
No Windows Vista, quando o sistema reconhece uma caneta, ele ignora a entrada por toque. Ou seja, o traço de toque termina e o traço da caneta começa. Como isso pode mudar no futuro, seu código não deve assumir que a entrada por caneta e toque é mutuamente exclusiva.
Outras fontes de mensagem do mouse
Há outras fontes de mensagens do mouse mesmo quando o usuário está interagindo apenas usando o dedo ou a caneta. As fontes incluem touchpads, bem como movimentos destinados a permitir que um aplicativo por trás de uma janela em camadas esteja ciente de que o mouse está se movendo acima do aplicativo.
Habilitar e desabilitar a interface do usuário de entrada por toque
Talvez você queira habilitar ou desabilitar a interface do usuário de entrada por toque, dependendo dos requisitos do aplicativo. Para fazer isso, intercepte mensagens da janela do sistema operacional em um procedimento de janela e modifique a mensagem do Windows. Substitua wndProc em seu aplicativo para interceptar essas mensagens. O pseudocódigo C# a seguir mostra como habilitar e desabilitar a interface do usuário de entrada por toque. O código também mostra o uso da mesma técnica para desabilitar o gesto de pressionar e segurar. Esse método também funciona para desabilitar a caneta.
const int WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS = 716;
const uint SYSTEM_GESTURE_STATUS_NOHOLD = 0x00000001;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON = 0x00000100;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF = 0x00000200;
protected override void WndProc(ref Message msg)
{
switch (msg.Msg)
{
case WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS:
{
uint result = 0;
if (...)
{
result |= SYSTEM_GESTURE_STATUS_NOHOLD;
}
if (...)
{
result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON;
}
if (...)
{
result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF;
}
msg.Result = (IntPtr)result;
}
break;
default:
base.WndProc(ref msg);
break;
}
}
Tópicos relacionados