WM_GESTURE message
Transmet des informations sur un mouvement.
Paramètres
-
wParam
-
Fournit des informations identifiant la commande de mouvement et les valeurs d’argument spécifiques au mouvement. Ces informations sont les mêmes que celles transmises dans le membre ullArguments de la structure GESTUREINFO .
-
lParam
-
Fournit un handle aux informations identifiant la commande de mouvement et les valeurs d’argument spécifiques au mouvement. Ces informations sont récupérées en appelant GetGestureInfo.
Valeur retournée
Si une application traite ce message, elle doit retourner 0.
Si l’application ne traite pas le message, elle doit appeler DefWindowProc. Le fait de ne pas le faire entraîne une fuite de mémoire de l’application, car la poignée d’entrée tactile ne sera pas fermée et la mémoire de processus associée ne sera pas libérée.
Notes
Le tableau suivant répertorie les commandes de mouvement prises en charge.
ID de mouvement | Valeur (dwID) | Description |
---|---|---|
GID_BEGIN | 1 | Indique qu’un mouvement générique commence. |
GID_END | 2 | Indique une fin de mouvement générique. |
GID_ZOOM | 3 | Indique le début du zoom, le mouvement de zoom ou le point d’arrêt du zoom. Le premier GID_ZOOM message de commande commence un zoom, mais n’entraîne aucun zoom. La deuxième commande GID_ZOOM déclenche un zoom par rapport à l’état contenu dans la première GID_ZOOM. |
GID_PAN | 4 | Indique un mouvement panoramique ou un début de panoramique. La première commande GID_PAN indique un démarrage panoramique, mais n’effectue aucun panoramique. Avec le deuxième GID_PAN message de commande, l’application commence à effectuer un panoramique. |
GID_ROTATE | 5 | Indique faire pivoter le déplacement ou le début de la rotation. Le premier GID_ROTATE message de commande indique un mouvement de rotation ou un démarrage de rotation, mais ne fera pas pivoter. Le deuxième message de commande GID_ROTATE déclenche une opération de rotation par rapport à l’état contenu dans le premier GID_ROTATE. |
GID_TWOFINGERTAP | 6 | Indique un mouvement d’appui à deux doigts. |
GID_PRESSANDTAP | 7 | Indique le mouvement d’appui et d’appui. |
Notes
Pour activer la prise en charge héritée, les messages avec les commandes de mouvement GID_BEGIN et GID_END doivent être transférés à l’aide de DefWindowProc.
Le tableau suivant indique les arguments de mouvement passés dans les paramètres lParam et wParam .
ID de mouvement | Mouvement | ullArgument | ptsLocation dans la structure GestureInfo |
---|---|---|---|
GID_ZOOM | Zoom avant/arrière | Indique la distance entre les deux points. | Indique le centre du zoom. |
GID_PAN | Panoramique | Indique la distance entre les deux points. | Indique la position actuelle du panoramique. |
GID_ROTATE | Pivoter (pivot) | Indique l’angle de rotation si l’indicateur GF_BEGIN est défini. Sinon, il s’agit du changement d’angle depuis le début de la rotation. Cette commande est signée pour indiquer le sens de la rotation. Utilisez les macros GID_ROTATE_ANGLE_FROM_ARGUMENT et GID_ROTATE_ANGLE_TO_ARGUMENT pour obtenir et définir la valeur de l’angle. | Cela indique le centre de la rotation, qui est le point fixe autour duquel l’objet cible est pivoté. |
GID_TWOFINGERTAP | Appuyez sur deux doigts | Indique la distance entre les deux doigts. | Indique le centre des deux doigts. |
GID_PRESSANDTAP | Appuyez et appuyez sur | Indique le delta entre le premier doigt et le deuxième doigt. Cette valeur est stockée dans les 32 bits inférieurs de l’ullArgument dans une structure POINT . | Indique la position sur laquelle le premier doigt descend. |
Notes
Toutes les distances et positions sont fournies dans les coordonnées d’écran physiques.
Notes
Les paramètres dwID et ullArgument doivent uniquement être considérés comme accompagnant les commandes GID_* et ne doivent pas être modifiés par les applications.
Exemples
Le code suivant montre comment obtenir des informations spécifiques aux mouvements associées à ce message.
Notes
Vous devez toujours transférer les messages non pris en charge vers DefWindowProc et fermer le handle d’entrée de mouvement pour les messages que vous gérez avec un appel à CloseGestureInfoHandle. Dans cet exemple, le comportement du gestionnaire de mouvements par défaut est supprimé, car le handle TOUCHINPUT est fermé dans chacun des cas de mouvement. Si vous avez supprimé les cas dans le code ci-dessus pour les messages non gérés, le gestionnaire de mouvements par défaut traiterait les messages en les transférant à DefWindowProc dans le cas par défaut.
LRESULT DecodeGesture(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
// Create a structure to populate and retrieve the extra message info.
GESTUREINFO gi;
ZeroMemory(&gi, sizeof(GESTUREINFO));
gi.cbSize = sizeof(GESTUREINFO);
BOOL bResult = GetGestureInfo((HGESTUREINFO)lParam, &gi);
BOOL bHandled = FALSE;
if (bResult){
// now interpret the gesture
switch (gi.dwID){
case GID_ZOOM:
// Code for zooming goes here
bHandled = TRUE;
break;
case GID_PAN:
// Code for panning goes here
bHandled = TRUE;
break;
case GID_ROTATE:
// Code for rotation goes here
bHandled = TRUE;
break;
case GID_TWOFINGERTAP:
// Code for two-finger tap goes here
bHandled = TRUE;
break;
case GID_PRESSANDTAP:
// Code for roll over goes here
bHandled = TRUE;
break;
default:
// A gesture was not recognized
break;
}
}else{
DWORD dwErr = GetLastError();
if (dwErr > 0){
//MessageBoxW(hWnd, L"Error!", L"Could not retrieve a GESTUREINFO structure.", MB_OK);
}
}
if (bHandled){
return 0;
}else{
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2008 R2 [applications de bureau uniquement] |
En-tête |
|