Compatibilidad con entrada táctil en Windows Vista

A partir de Windows Vista, tablet PC Technology tiene compatibilidad con entrada táctil en tablet PC con digitalizadores con capacidad táctil. Esta compatibilidad incluye una interfaz de usuario mejorada que ayuda a dirigir y dirigir Windows cuando se usa un dedo para la entrada.

Compatibilidad con digitalizador táctil

Entrada táctil y lápiz no exclusiva

No suponga que la entrada táctil y el lápiz son mutuamente excluyentes en las aplicaciones InkCollector, InkOverlay y RealTimeStylus .

En Windows Vista, cuando el sistema reconoce un lápiz, omite la entrada táctil. Es decir, el trazo táctil termina y comienza el trazo de lápiz. Dado que esto podría cambiar en el futuro, el código no debe asumir que la entrada táctil y el lápiz son mutuamente excluyentes.

Otros orígenes de mensajes del mouse

Hay otros orígenes de mensajes del mouse incluso cuando el usuario solo interactúa con el dedo o el lápiz. Los orígenes incluyen paneles táctiles, así como el movimiento diseñado para permitir que una aplicación detrás de una ventana superpuesta tenga en cuenta que el mouse se mueve por encima de la aplicación.

Habilitación y deshabilitación de la interfaz de usuario de entrada táctil

Es posible que desee habilitar o deshabilitar la interfaz de usuario de entrada táctil en función de los requisitos de la aplicación. Para ello, intercepte los mensajes de ventana del sistema operativo en un procedimiento de ventana y modifique el mensaje de Windows. Invalide WndProc en la aplicación para interceptar estos mensajes. El siguiente pseudocódigo de C# muestra cómo habilitar y deshabilitar la interfaz de usuario de entrada táctil. El código también muestra el uso de la misma técnica para deshabilitar el gesto de presionar y mantener presionado. Este método también funciona para deshabilitar el lápiz óptico.

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