Condividi tramite


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

Vedi anche

Notifications

Guida alla programmazione dei movimenti tocco di Windows