Toucheingabeunterstützung in Windows Vista

Ab Windows Vista bietet Tablet PC Technology Unterstützung für Toucheingaben auf Tablet PCs mit touchfähigen Digitizern. Diese Unterstützung umfasst eine erweiterte Benutzeroberfläche zur Unterstützung der Ausrichtung und Befehlssteuerung Windows bei der Verwendung eines Fingers für die Eingabe.

Touch Digitizer-Unterstützung

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 Toucheingaben. Das heißt, der Berührungsstrich endet, und der Stiftstrich beginnt. Da sich dies in Zukunft möglicherweise ändern könnte, sollte Ihr Code nicht davon ausgehen, dass Stift- und Toucheingaben sich gegenseitig ausschließen.

Andere Mausnachrichtenquellen

Es gibt auch andere Quellen für Mausnachrichten, auch wenn der Benutzer nur mit dem Finger oder Stift interagiert. Zu den Quellen gehören Touchpads sowie Bewegung, mit der eine Anwendung hinter einem mehrstufigen Fenster darauf achten kann, dass sich die Maus über der Anwendung bewegt.

Aktivieren und Deaktivieren der Toucheingabe-Benutzeroberfläche

Abhängig von den Anforderungen Ihrer Anwendung können Sie die Toucheingabe-Benutzeroberfläche aktivieren oder deaktivieren. Um dies zu erreichen, fangen Sie Betriebssystemfenstermeldungen in einer Fensterprozedur ab, und ändern Sie die Windows Meldung. Überschreiben Sie WndProc in Ihrer Anwendung, um diese Nachrichten abzufangen. Der folgende # C-Pseudocode zeigt, wie die Benutzeroberfläche für die Toucheingabe aktiviert und deaktiviert wird. Der Code zeigt auch die Verwendung der gleichen Technik zum Deaktivieren der Gedrückt halten-Geste. Diese Methode funktioniert auch zum Deaktivieren des Stifts.

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