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;
    }
}

Windows Touch