Prise en charge de l’entrée tactile dans Windows Vista

À compter de Windows Vista, la technologie Tablet PC prend en charge l’entrée tactile sur les Tablet PC avec des numériseurs tactiles. Cette prise en charge inclut une interface utilisateur améliorée pour faciliter le ciblage et la commande de Windows lors de l’utilisation d’un doigt pour l’entrée.

Prise en charge du numériseur tactile

Stylet et entrée tactile non exclusif

Ne supposez pas que l’entrée au stylet et l’entrée tactile s’excluent mutuellement dans les applications InkCollector, InkOverlay et RealTimeStylus .

Dans Windows Vista, lorsque le système reconnaît un stylet, il ignore l’entrée tactile. Autrement dit, le trait tactile se termine et le trait de stylet commence. Étant donné que cela pourrait changer à l’avenir, votre code ne doit pas supposer que l’entrée au stylet et l’entrée tactile s’excluent mutuellement.

Autres sources de messages de souris

Il existe d’autres sources de messages de souris, même lorsque l’utilisateur interagit uniquement à l’aide du doigt ou du stylet. Les sources incluent les pavés tactiles, ainsi que le mouvement destiné à permettre à une application derrière une fenêtre superposée de savoir que la souris se déplace au-dessus de l’application.

Activation et désactivation de l’interface utilisateur d’entrée tactile

Vous pouvez activer ou désactiver l’interface utilisateur d’entrée tactile en fonction des exigences de votre application. Pour ce faire, interceptez les messages de fenêtre du système d’exploitation dans une procédure de fenêtre et modifiez le message Windows. Remplacez WndProc dans votre application pour intercepter ces messages. Le pseudo-code C# suivant montre comment activer et désactiver l’interface utilisateur d’entrée tactile. Le code montre également l’utilisation de la même technique pour désactiver le mouvement d’appui prolongé. Cette méthode fonctionne également pour désactiver le stylet.

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