messaggio di WM_GESTURE
Passa informazioni su un movimento.
Parametri
-
wParam
-
Fornisce informazioni che identificano i valori di argomento specifici del movimento e del movimento. Queste informazioni sono le stesse informazioni passate nel membro ullArguments della struttura GESTUREINFO .
-
lParam
-
Fornisce un handle per informazioni che identificano il comando di movimento e i valori di argomento specifici del movimento. Queste informazioni vengono recuperate chiamando GetGestureInfo.
Valore restituito
Se un'applicazione elabora questo messaggio, deve restituire 0.
Se l'applicazione non elabora il messaggio, deve chiamare DefWindowProc. In caso contrario, l'applicazione perderà memoria perché l'handle di input tocco non verrà chiuso e la memoria del processo associata non verrà liberata.
Commenti
Nella tabella seguente sono elencati i comandi di movimento supportati.
ID movimento | Valore (dwID) | Descrizione |
---|---|---|
GID_BEGIN | 1 | Indica l'inizio di un movimento generico. |
GID_END | 2 | Indica una fine di movimento generica. |
GID_ZOOM | 3 | Indica l'avvio dello zoom, lo spostamento dello zoom o l'arresto dello zoom. Il primo messaggio di comando GID_ZOOM avvia uno zoom, ma non causa lo zoom. Il secondo comando GID_ZOOM attiva uno zoom rispetto allo stato contenuto nel primo GID_ZOOM. |
GID_PAN | 4 | Indica lo spostamento della panoramica o l'avvio della panoramica. Il primo comando GID_PAN indica l'avvio della panoramica, ma non esegue alcuna panoramica. Con il secondo messaggio di comando GID_PAN , l'applicazione inizierà la panoramica. |
GID_ROTATE | 5 | Indica lo spostamento o la rotazione dell'inizio. Il primo messaggio di comando GID_ROTATE indica una rotazione o una rotazione di avvio, ma non verrà ruotata. Il secondo messaggio di comando GID_ROTATE attiverà un'operazione di rotazione relativa allo stato contenuto nel primo GID_ROTATE. |
GID_TWOFINGERTAP | 6 | Indica il gesto di tocco a due dita. |
GID_PRESSANDTAP | 7 | Indica il movimento di pressione e tocco. |
Nota
Per abilitare il supporto legacy, i messaggi con i comandi GID_BEGIN e GID_END movimento devono essere inoltrati tramite DefWindowProc.
La tabella seguente indica gli argomenti del movimento passati nei parametri lParam e wParam .
ID movimento | Movimento | ullArgument | ptsLocation nella struttura GestureInfo |
---|---|---|---|
GID_ZOOM | Zoom avanti/indietro | Indica la distanza tra i due punti. | Indica il centro dello zoom. |
GID_PAN | Dettaglio | Indica la distanza tra i due punti. | Indica la posizione corrente della panoramica. |
GID_ROTATE | Ruota (pivot) | Indica l'angolo di rotazione se è impostato il flag GF_BEGIN . In caso contrario, si tratta della modifica dell'angolo dall'avvio della rotazione. Viene firmato per indicare la direzione della rotazione. Utilizzare le macro GID_ROTATE_ANGLE_FROM_ARGUMENT e GID_ROTATE_ANGLE_TO_ARGUMENT per ottenere e impostare il valore dell'angolo. | Indica il centro della rotazione, ovvero il punto stazionario intorno al quale l'oggetto di destinazione viene ruotato. |
GID_TWOFINGERTAP | Tocco con due dita | Indica la distanza tra le due dita. | Indica il centro delle due dita. |
GID_PRESSANDTAP | Premere e toccare | Indica il delta tra il primo dito e il secondo dito. Questo valore viene archiviato nei 32 bit inferiori di ullArgument in una struttura POINT . | Indica la posizione su cui viene premuto il primo dito. |
Nota
Tutte le distanze e le posizioni vengono fornite nelle coordinate dello schermo fisico.
Nota
I parametri dwID e ullArgument devono essere considerati associati solo ai comandi GID_* e non devono essere modificati dalle applicazioni.
Esempio
Il codice seguente illustra come ottenere informazioni specifiche del movimento associate a questo messaggio.
Nota
È consigliabile inoltrare sempre messaggi non gestiti a DefWindowProc e chiudere l'handle di input del movimento per i messaggi gestiti con una chiamata a CloseGestureInfoHandle. In questo esempio, il comportamento predefinito del gestore movimenti verrà eliminato perché l'handle TOUCHINPUT viene chiuso in ognuno dei casi di movimento. Se sono stati rimossi i case nel codice precedente per i messaggi non gestiti, il gestore dei movimenti predefinito elabora i messaggi inoltrando a DefWindowProc nel caso predefinito.
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
Requisito | Valore |
---|---|
Client minimo supportato |
Windows 7 [solo app desktop] |
Server minimo supportato |
Windows Server 2008 R2 [solo app desktop] |
Intestazione |
|