Supporto dell'input tocco in Windows Vista

A partire da Windows Vista, Tablet PC Technology ha il supporto per l'input tocco su Tablet PC con digitalizzatori compatibili con tocco. Questo supporto include un'interfaccia utente avanzata per facilitare la destinazione e il comando di Windows quando si usa un dito per l'input.

Supporto del digitalizzatore tocco

Input penna e tocco non esclusivo

Non presupporre che l'input penna e tocco si escludono a vicenda nelle applicazioni InkCollector, InkOverlay e RealTimeStylus .

In Windows Vista, quando il sistema riconosce una penna, ignora l'input tocco. Ovvero, il tratto tocco termina e inizia il tratto della penna. Poiché questo potrebbe cambiare in futuro, il codice non deve presupporre che l'input penna e tocco si escludono a vicenda.

Altre origini messaggi del mouse

Esistono altre fonti di messaggi del mouse anche quando l'utente interagisce solo con il dito o la penna. Le origini includono touchpad, nonché lo spostamento progettato per consentire a un'applicazione dietro una finestra a più livelli di tenere presente che il mouse si sta spostando sopra l'applicazione.

Abilitazione e disabilitazione dell'interfaccia utente di input tocco

È possibile abilitare o disabilitare l'interfaccia utente di input tocco a seconda dei requisiti dell'applicazione. A tale scopo, intercettare i messaggi della finestra del sistema operativo in una procedura di finestra e modificare il messaggio di Windows. Eseguire l'override di WndProc nell'applicazione per intercettare questi messaggi. Lo pseudo-codice C# seguente illustra come abilitare e disabilitare l'interfaccia utente di input tocco. Il codice mostra anche l'uso della stessa tecnica per disabilitare il movimento di pressione e blocco. Questo metodo funziona anche per disabilitare lo stilo.

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