Comment autoriser le mouvement d’appuyer et maintenir de Tablet PC dans une Application MFC

Résumé

Sur un Tablet PC exécutant Windows Vista ou version ultérieure, le système envoie un message WM_TABLET_QUERYSYSTEMGESTURESTATUS pour activer windows pouvant recevoir des entrées d’utilisateur. Dans une application MFC, toutes les fenêtres sont généralement dérivées de la classe CWnd, et cette classe de base gère ce message dans sa méthode OnTabletQuerySystemGestureStatus. Cette méthode appelle la fonction virtuelle CWnd::GetGestureStatus, qui retournera ensuite TABLET_DISABLE_PRESSANDHOLD, pour des raisons de performances. Si votre application souhaite activer le mouvement d’appuyer et maintenir, vous devez substituer cette méthode dans votre classe dérivée de fenêtre et renvoyer quelque chose qui n’inclut pas l’indicateur TABLET_DISABLE_PRESSANDHOLD.

Plus d'informations

Pour activer le droit concept qui signifie généralement « afficher le menu contextuel », et est fourni sous la forme de messages WM_CONTEXTMENU, WM_RBUTTONUP et WM_RBUTTONDOWN et ISG_HOLDENTER et ISG_RIGHTTAP les événements, le mouvement « appuyez sur et maintenez » doit être activé pour cette fenêtre. Pour détecter ce mouvement, par nécessité un délai est introduit pour faire la distinction entre un simple « appuyer sur » (considérées comme un clic gauche) et un « appuyer et maintenir » (clic droit). Par conséquent, il prendra plus de temps pour gauche cliquez sur événements, et l’application vous paraîtront moins sensible. Ainsi, pour cette raison, le comportement par défaut est de désactiver le mouvement « appuyez sur et maintenez la touche ».

Si votre application MFC doit ce mouvement à mettre en œuvre avec le bouton droit de la gestion, vous devez substituer la fonction virtuelle GetGestureStatus pour toutes les classes de fenêtres dérivées qui ont besoin d’implémenter un gestionnaire de clic droit. Supposons par exemple qu’il s’agit d’une classe d’affichage nommée CMyView définie dans MyView.h et implémentée dans MyView.cpp. Dans MyView.h, ajoutez le code suivant :

virtual ULONG GetGestureStatus(CPoint ptTouch);
Dans MyView.cpp, ajoutez le code suivant :
ULONG CMyView::GetGestureStatus(CPoint /*ptTouch*/) { return 0; }
Le 0, valeur de retour pourrait être remplacé par une combinaison d’autres indicateurs, comme décrit dans la documentation de WM_TABLET_QUERYSYSTEMGESTURESTATUS , mais si vous souhaitez activer « appuyer et maintenir », n’incluez pas l’indicateur TABLET_DISABLE_PRESSANDHOLD.

Propriétés

ID d'article : 2846829 - Dernière mise à jour : 26 janv. 2017 - Révision : 1

Commentaires