Freigeben über


Unterstützung für Toucheingaben in Windows Vista

Ab Windows Vista bietet die Tablet PC-Technologie Unterstützung für die Toucheingabe auf Tablet-PCs mit Touch-fähigen Digitalisierern. Diese Unterstützung umfasst eine erweiterte Benutzeroberfläche, die bei der Zielbestimmung und steuerung von Windows bei Verwendung eines Fingers für die Eingabe unterstützt wird.

Unterstützung des Touchdigisierers

Stift- und Toucheingabe nicht exklusiv

Gehen Sie nicht davon aus, dass die Stift- und Toucheingabe sich gegenseitig in InkCollector-, InkOverlay-und RealTimeStylus Anwendungen 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 möglicherweise in Zukunft ä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 Bewegungen, mit denen eine Anwendung hinter einem mehrschichtigen Fenster beachtet werden kann, dass die Maus über der Anwendung bewegt wird.

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

Je nach den Anforderungen Ihrer Anwendung können Sie die Benutzeroberfläche für die Toucheingabe aktivieren oder deaktivieren. Um dies zu erreichen, abfangen Sie Windows-Fenstermeldungen in einer Fensterprozedur ab, und ändern Sie die Windows-Nachricht. Ü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 derselben 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