Partilhar via


Suporte de entrada por toque no Windows Vista

Começando com o Windows Vista, a tecnologia Tablet PC tem suporte para entrada por toque em Tablet PCs com digitalizadores capazes de toque. Esse suporte inclui uma interface de usuário aprimorada para ajudar na segmentação e no comando do Windows ao usar um dedo para entrada.

Suporte para digitalizador de toque

Entrada por caneta e toque não exclusiva

Não assuma que a entrada por caneta e toque são mutuamente exclusivas em InkCollector, InkOverlaye aplicativos RealTimeStylus.

No Windows Vista, quando o sistema reconhece uma caneta, ignora a entrada por toque. Ou seja, o traço de toque termina e o traço de caneta começa. Como isso pode mudar no futuro, seu código não deve assumir que a entrada por caneta e toque são mutuamente exclusivas.

Outras fontes de mensagens do mouse

Existem 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 atrás de uma janela em camadas esteja ciente de que o mouse está se movendo acima do aplicativo.

Ativando e desativando a interface do usuário de entrada por toque

Você pode querer ativar ou desativar a interface do usuário de entrada por toque, dependendo dos requisitos do seu aplicativo. Para fazer isso, intercete mensagens de janela do sistema operacional em um procedimento de janela e modifique a mensagem do Windows. Substitua WndProc em seu aplicativo para intercetar 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 desativar o gesto de pressionar e segurar. Este método também funciona para desativar 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