Struttura GESTUREINFO (winuser.h)
Archivia informazioni su un movimento.
Sintassi
typedef struct tagGESTUREINFO {
UINT cbSize;
DWORD dwFlags;
DWORD dwID;
HWND hwndTarget;
POINTS ptsLocation;
DWORD dwInstanceID;
DWORD dwSequenceID;
ULONGLONG ullArguments;
UINT cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;
Members
cbSize
Dimensioni della struttura, in byte. Il chiamante deve impostare questo valore su sizeof(GESTUREINFO)
.
dwFlags
Stato del movimento. Per altre informazioni, vedere Osservazioni.
dwID
Identificatore del comando di movimento.
hwndTarget
Handle per la finestra destinata a questo movimento.
ptsLocation
Struttura POINTS contenente le coordinate associate al movimento. Queste coordinate sono sempre relative all'origine dello schermo.
dwInstanceID
Identificatore usato internamente per la struttura.
dwSequenceID
Identificatore usato internamente per la sequenza.
ullArguments
Intero senza segno a 64 bit che contiene gli argomenti per i movimenti che si adattano a 8 byte.
cbExtraArgs
Dimensioni, in byte, di argomenti aggiuntivi che accompagnano questo gesto.
Commenti
L'HIDWORD del membro ullArguments è sempre 0, con le eccezioni seguenti:
- Per GID_PAN, è 0 tranne quando c'è inertia. Quando GF_INERTIA è impostato, HIDWORD è un vettore inertia (due valori a 16 bit).
- Per GID_PRESSANDTAP, è la distanza tra i due punti.
I flag seguenti indicano i vari stati dei movimenti e vengono archiviati in dwFlags.
Nome | Valore | Descrizione |
---|---|---|
GF_BEGIN | 0x00000001 | Viene avviato un gesto. |
GF_INERTIA | 0x00000002 | Un gesto ha attivato l'inerzia. |
GF_END | 0x00000004 | Un gesto è finito. |
Nome | Valore | Descrizione |
---|---|---|
GID_BEGIN | 1 | Viene avviato un gesto. |
GID_END | 2 | Un gesto termina. |
GID_ZOOM | 3 | Movimento di zoom. |
GID_PAN | 4 | Movimento di panoramica. |
GID_ROTATE | 5 | Movimento di rotazione. |
GID_TWOFINGERTAP | 6 | Movimento di tocco a due dita. |
GID_PRESSANDTAP | 7 | Movimento di pressione e tocco. |
typedef GESTUREINFO const * PCGESTUREINFO;
Esempio
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);
}
}
Requisiti
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Intestazione | winuser.h (include Windows.h) |