Structure GESTUREINFO (winuser.h)
Stocke des informations sur un mouvement.
Syntaxe
typedef struct tagGESTUREINFO {
UINT cbSize;
DWORD dwFlags;
DWORD dwID;
HWND hwndTarget;
POINTS ptsLocation;
DWORD dwInstanceID;
DWORD dwSequenceID;
ULONGLONG ullArguments;
UINT cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;
Membres
cbSize
Taille de la structure, en octets. L’appelant doit définir cette valeur sur sizeof(GESTUREINFO)
.
dwFlags
État du mouvement. Pour plus d’informations, consultez Remarques.
dwID
Identificateur de la commande de mouvement.
hwndTarget
Handle de la fenêtre ciblée par ce mouvement.
ptsLocation
Structure POINTS contenant les coordonnées associées au mouvement. Ces coordonnées sont toujours relatives à l’origine de l’écran.
dwInstanceID
Identificateur utilisé en interne pour la structure.
dwSequenceID
Identificateur utilisé en interne pour la séquence.
ullArguments
Entier non signé 64 bits qui contient les arguments des mouvements qui tiennent en 8 octets.
cbExtraArgs
Taille, en octets, des arguments supplémentaires qui accompagnent ce geste.
Remarques
Le HIDWORD du membre ullArguments est toujours 0, avec les exceptions suivantes :
- Pour GID_PAN, il est 0 sauf en cas d’inertie. Lorsque GF_INERTIA est défini, HIDWORD est un vecteur d’inertie (deux valeurs 16 bits).
- Pour GID_PRESSANDTAP, il s’agit de la distance entre les deux points.
Les indicateurs suivants indiquent les différents états des mouvements et sont stockés dans dwFlags.
Nom | Valeur | Description |
---|---|---|
GF_BEGIN | 0x00000001 | Un mouvement commence. |
GF_INERTIA | 0x00000002 | Un geste a déclenché l’inertie. |
GF_END | 0x00000004 | Un mouvement est terminé. |
Nom | Valeur | Description |
---|---|---|
GID_BEGIN | 1 | Un mouvement commence. |
GID_END | 2 | Un mouvement se termine. |
GID_ZOOM | 3 | Mouvement de zoom. |
GID_PAN | 4 | Mouvement panoramique. |
GID_ROTATE | 5 | Mouvement de rotation. |
GID_TWOFINGERTAP | 6 | Mouvement d’appui à deux doigts. |
GID_PRESSANDTAP | 7 | Mouvement d’appui et d’appui. |
typedef GESTUREINFO const * PCGESTUREINFO;
Exemples
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);
}
}
Spécifications
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) |