Bagikan melalui


Struktur GESTUREINFO (winuser.h)

Menyimpan informasi tentang gerakan.

Sintaks

typedef struct tagGESTUREINFO {
  UINT      cbSize;
  DWORD     dwFlags;
  DWORD     dwID;
  HWND      hwndTarget;
  POINTS    ptsLocation;
  DWORD     dwInstanceID;
  DWORD     dwSequenceID;
  ULONGLONG ullArguments;
  UINT      cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;

Anggota

cbSize

Ukuran struktur, dalam byte. Penelepon harus mengatur ini ke sizeof(GESTUREINFO).

dwFlags

Keadaan gerakan. Untuk informasi tambahan, lihat Keterangan.

dwID

Pengidentifikasi perintah gerakan.

hwndTarget

Handel ke jendela yang ditargetkan oleh gerakan ini.

ptsLocation

Struktur POINTS yang berisi koordinat yang terkait dengan gerakan. Koordinat ini selalu relatif terhadap asal layar.

dwInstanceID

Pengidentifikasi yang digunakan secara internal untuk struktur.

dwSequenceID

Pengidentifikasi yang digunakan secara internal untuk urutan tersebut.

ullArguments

Bilangan bulat 64-bit yang tidak ditandatangani yang berisi argumen untuk gerakan yang pas dengan 8 byte.

cbExtraArgs

Ukuran, dalam byte, argumen tambahan yang menyertai gerakan ini.

Keterangan

HIDWORD anggota ullArguments selalu 0, dengan pengecualian berikut:

  • Untuk GID_PAN, itu adalah 0 kecuali ketika ada inertia. Saat GF_INERTIA diatur, HIDWORD adalah vektor inertia (dua nilai 16-bit).
  • Untuk GID_PRESSANDTAP, itu adalah jarak antara dua titik.
Struktur GESTUREINFO diambil dengan meneruskan handel ke struktur informasi gerakan ke fungsi GetGestureInfo .

Bendera berikut menunjukkan berbagai status gerakan dan disimpan dalam dwFlags.

Nama Nilai Deskripsi
GF_BEGIN 0x00000001 Sebuah gerakan dimulai.
GF_INERTIA 0x00000002 Sebuah gerakan telah memicu inertia.
GF_END 0x00000004 Sebuah gerakan telah selesai.
 
Catatan Sebagian besar aplikasi harus mengabaikan pesan GID_BEGIN dan GID_END dan meneruskannya ke DefWindowProc. Pesan-pesan ini digunakan oleh penangan gerakan default. Perilaku aplikasi tidak terdefinisi ketika pesan GID_BEGIN dan GID_END digunakan oleh aplikasi pihak ketiga.
 
Tabel berikut menunjukkan berbagai pengidentifikasi untuk gerakan.
Nama Nilai Deskripsi
GID_BEGIN 1 Sebuah gerakan dimulai.
GID_END 2 Sebuah gerakan berakhir.
GID_ZOOM 3 Gerakan zoom.
GID_PAN 4 Gerakan pan.
GID_ROTATE 5 Gerakan rotasi.
GID_TWOFINGERTAP 6 Gerakan ketuk dua jari.
GID_PRESSANDTAP 7 Tekan dan ketuk gerakan.
 
Catatan Gerakan GID_PAN memiliki inertia bawaan. Di akhir gerakan panci, pesan gerakan pan tambahan dibuat oleh sistem operasi.
 
Jenis berikut didefinisikan untuk mewakili pointer konstan ke struktur GESTUREINFO .

    typedef GESTUREINFO const * PCGESTUREINFO;	 

Contoh

  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);
    }
  }

Persyaratan

   
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Header winuser.h (termasuk Windows.h)

Lihat juga

GetGestureInfo

Struktur

WM_GESTURE