Aktivieren der Tablet-Gedrückthalten-Geste in MFC-Anwendungen

Dieser Artikel enthält Informationen zum Aktivieren der Gedrückthalten-Geste in einer MFC-Anwendung (Microsoft Foundation Class).

Ursprüngliche Produktversion: Visual Studio 2010 und höhere Versionen
Ursprüngliche KB-Nummer: 2846829

Zusammenfassung

Auf einem Tablet-PC mit Windows sendet das System eine WM_TABLET_QUERYSYSTEMGESTURESTATUS Nachricht an aktive Fenster, die Benutzereingaben empfangen können. In einer MFC-Anwendung werden in der Regel alle Fenster von der CWnd -Klasse abgeleitet, und diese Basisklasse verarbeitet diese Meldung in ihrer OnTabletQuerySystemGestureStatus -Methode. Diese Methode ruft die virtuelle Funktion CWnd::GetGestureStatusauf, die dann aus Leistungsgründen zurückgibt TABLET_DISABLE_PRESSANDHOLD. Wenn Ihre Anwendung die Gedrückthalten-Geste aktivieren möchte, müssen Sie diese Methode in der abgeleiteten Fensterklasse überschreiben und etwas zurückgeben, das das TABLET_DISABLE_PRESSANDHOLD Flag nicht enthält.

Standardverhalten: Deaktivieren der Gedrückthalten-Geste

Um das Rechtsklick-Konzept zu aktivieren, das in der Regel das Anzeigen des Kontextmenüs bedeutet und in Form von WM_RBUTTONDOWN- WM_RBUTTONUPund WM_CONTEXTMENU -Nachrichten und ISG_HOLDENTER - ISG_RIGHTTAP Ereignissen vorhanden ist, muss die Gedrückthalten-Geste für dieses Fenster aktiviert sein. Um diese Geste zu erkennen, wird notwendigerweise eine gewisse Verzögerung eingeführt, um zwischen einem einfachen Drücken (als Linksklick behandelt) und einem Drücken und Halten (Rechtsklick) zu unterscheiden. Daher dauert es länger, bis Linksklickereignisse ausgelöst werden, und die Anwendung scheint weniger reaktionsfähig zu sein. Aus diesem Grund besteht das Standardverhalten darin, die Gedrückthalten-Geste zu deaktivieren.

Aktivieren der Tablet-Gedrückthalten-Geste

Wenn Ihre MFC-Anwendung diese Geste benötigt, um die Rechtsklickbehandlung zu implementieren, müssen Sie die virtuelle GetGestureStatus Funktion für alle abgeleiteten Fensterklassen überschreiben, die einen Rechtsklickhandler implementieren müssen. Angenommen, es handelt sich um eine Ansichtsklasse namens CMyView , die in MyView.h definiert und in MyView.cpp implementiert ist. Fügen Sie in MyView.h Folgendes hinzu:

virtual ULONG GetGestureStatus(CPoint ptTouch);

Fügen Sie MyView.cpp Folgendes hinzu:

ULONG CMyView::GetGestureStatus(CPoint /*ptTouch*/)
{
    return 0;
}

Der Rückgabewert 0 kann durch eine Kombination anderer Flags ersetzt werden, wie in der WM_TABLET_QUERYSYSTEMGESTURESTATUS Dokumentation beschrieben. Wenn Sie das Drücken und Halten aktivieren möchten, schließen Sie das TABLET_DISABLE_PRESSANDHOLD Flag jedoch nicht ein.