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
Winuser.h (inclure Windows.h)

Voir aussi

Notifications

Guide de programmation des mouvements Windows Touch