Unterstützung für Toucheingaben in Windows Vista

Ab Windows Vista unterstützt die Tablet-PC-Technologie Toucheingaben auf Tablet-PCs mit Touch-fähigen Digitalisierern. Diese Unterstützung umfasst eine erweiterte Benutzeroberfläche, die bei der Ziel- und Befehlssteuerung von Windows bei verwendung eines Fingers für Eingaben unterstützt.

Unterstützung für Touch Digitizer

Stift- und Toucheingabe nicht exklusiv

Gehen Sie nicht davon aus, dass stift- und toucheingaben sich in InkCollector-, InkOverlay- und RealTimeStylus-Anwendungen gegenseitig ausschließen.

Wenn das System in Windows Vista einen Stift erkennt, ignoriert es die Toucheingabe. Das heißt, der Touchstrich endet, und der Stiftstrich beginnt. Da sich dies in Zukunft möglicherweise ändern könnte, sollte Ihr Code nicht davon ausgehen, dass sich Stift- und Toucheingaben gegenseitig ausschließen.

Andere Mausnachrichtenquellen

Es gibt andere Quellen für Mausnachrichten, auch wenn der Benutzer nur mit dem Finger oder Stift interagiert. Zu den Quellen gehören Touchpads sowie Bewegungen, mit denen eine Anwendung hinter einem mehrschichtigen Fenster erkennen kann, dass die Maus über der Anwendung bewegt wird.

Aktivieren und Deaktivieren der Benutzeroberfläche für die Toucheingabe

Abhängig von den Anforderungen Ihrer Anwendung können Sie die Benutzeroberfläche der Toucheingabe aktivieren oder deaktivieren. Um dies zu erreichen, können Sie Meldungen des Betriebssystemfensters in einer Fensterprozedur abfangen und die Windows-Meldung ändern. Überschreiben Sie WndProc in Ihrer Anwendung, um diese Nachrichten abzufangen. Der folgende C#-Pseudocode zeigt, wie Sie die Benutzeroberfläche der Toucheingabe aktivieren und deaktivieren. Der Code zeigt auch die Verwendung der gleichen Technik zum Deaktivieren der Gedrückthalten-Geste. Diese Methode funktioniert auch zum Deaktivieren des Eingabestifts.

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