Aktivieren von Tablet-Gedrückthalten-Gesten in MFC-Anwendungen
Dieser Artikel enthält Informationen zum Aktivieren von Gedrückthalten-Gesten in einer Microsoft Foundation Class (MFC)-Anwendung.
Originalversion des Produkts: Visual Studio 2010 und höher
Ursprüngliche KB-Nummer: 2846829
Zusammenfassung
Auf einem Tablet-PC, auf dem Windows ausgeführt wird, 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ückgegeben TABLET_DISABLE_PRESSANDHOLDwird. Wenn Ihre Anwendung die Gedrückthaltegeste aktivieren möchte, müssen Sie diese Methode in der abgeleiteten Fensterklasse überschreiben und etwas zurückgeben, das das TABLET_DISABLE_PRESSANDHOLD Kennzeichen nicht enthält.
Standardverhalten: Deaktivieren der Gedrückthaltegeste
Um das Rechtsklick-Konzept zu aktivieren, das normalerweise bedeutet, dass das Kontextmenü angezeigt wird und in Form von WM_RBUTTONDOWN, WM_RBUTTONUPund WM_CONTEXTMENU Nachrichten und ISG_RIGHTTAP ISG_HOLDENTER Ereignissen vorkommt, muss die Gedrückthalten-Geste für dieses Fenster aktiviert sein. Um diese Geste zu erkennen, wird notwendigerweise eine 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ückthaltegeste zu deaktivieren.
Tablet-Gedrückthalten-Geste aktivieren
Wenn Ihre MFC-Anwendung diese Geste zum Implementieren der Rechtsklickbehandlung benötigt, müssen Sie die virtuelle GetGestureStatus Funktion für alle abgeleiteten Fensterklassen außer Kraft setzen, die einen Rechtsklickhandler implementieren müssen. Nehmen wir an, dass es sich um eine Ansichtsklasse namens CMyView handelt, 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 in "MyView.cpp" Folgendes hinzu:
ULONG CMyView::GetGestureStatus(CPoint /*ptTouch*/)
{
return 0;
}
Der Rückgabewert 0 kann durch eine Kombination aus anderen Flags ersetzt werden, wie in der WM_TABLET_QUERYSYSTEMGESTURESTATUS Dokumentation beschrieben. Wenn Sie jedoch das Drücken und Halten aktivieren möchten, schließen Sie das TABLET_DISABLE_PRESSANDHOLD Kennzeichen nicht ein.