Bagikan melalui


pesan WM_GESTURE

Meneruskan informasi tentang gerakan.

Parameter

wParam

Menyediakan informasi yang mengidentifikasi perintah gerakan dan nilai argumen khusus gerakan. Informasi ini adalah informasi yang sama yang diteruskan di anggota ullArguments dari struktur GESTUREINFO .

lParam

Menyediakan handel untuk informasi yang mengidentifikasi perintah gerakan dan nilai argumen khusus gerakan. Informasi ini diambil dengan memanggil GetGestureInfo.

Menampilkan nilai

Jika aplikasi memproses pesan ini, aplikasi harus mengembalikan 0.

Jika aplikasi tidak memproses pesan, aplikasi harus memanggil DefWindowProc. Tidak melakukannya akan menyebabkan aplikasi membocorkan memori karena handel input sentuh tidak akan ditutup dan memori proses terkait tidak akan dibebaskan.

Keterangan

Tabel berikut ini mencantumkan perintah gerakan yang didukung.

ID Gerakan Nilai (dwID) Deskripsi
GID_BEGIN 1 Menunjukkan gerakan generik dimulai.
GID_END 2 Menunjukkan akhir gerakan generik.
GID_ZOOM 3 Menunjukkan perbesar tampilan, perbesar tampilan, atau pemberhentian perbesar tampilan. Pesan perintah GID_ZOOM pertama memulai zoom tetapi tidak menyebabkan pembesaran tampilan apa pun. Perintah GID_ZOOM kedua memicu zoom relatif terhadap status yang terkandung dalam GID_ZOOM pertama.
GID_PAN 4 Menunjukkan pemindahan geser atau geser mulai. Perintah GID_PAN pertama menunjukkan awal pan tetapi tidak melakukan panning apa pun. Dengan pesan perintah GID_PAN kedua, aplikasi akan mulai menggeser.
GID_ROTATE 5 Menunjukkan putar pemindahan atau putar mulai. Pesan perintah GID_ROTATE pertama menunjukkan pemindahan putar atau putar mulai tetapi tidak akan berputar. Pesan perintah GID_ROTATE kedua akan memicu operasi rotasi relatif terhadap status yang terkandung dalam GID_ROTATE pertama.
GID_TWOFINGERTAP 6 Menunjukkan gerakan ketuk dua jari.
GID_PRESSANDTAP 7 Menunjukkan gerakan tekan dan ketuk.

Catatan

Untuk mengaktifkan dukungan warisan, pesan dengan perintah gerakan GID_BEGIN dan GID_END perlu diteruskan menggunakan DefWindowProc.

Tabel berikut menunjukkan argumen gerakan yang diteruskan dalam parameter lParam dan wParam .

ID Gerakan Gerakan ullArgument ptsLocation dalam struktur GestureInfo
GID_ZOOM Perbesar/Perkecil Menunjukkan jarak antara dua titik. Menunjukkan pusat perbesar tampilan.
GID_PAN Sentuhan searah Menunjukkan jarak antara dua titik. Menunjukkan posisi pancing saat ini.
GID_ROTATE Putar (pivot) Menunjukkan sudut rotasi jika bendera GF_BEGIN diatur. Jika tidak, ini adalah perubahan sudut sejak rotasi dimulai. Ini ditandatangani untuk menunjukkan arah rotasi. Gunakan makro GID_ROTATE_ANGLE_FROM_ARGUMENT dan GID_ROTATE_ANGLE_TO_ARGUMENT untuk mendapatkan dan mengatur nilai sudut. Ini menunjukkan pusat rotasi yang merupakan titik stasium tempat objek target diputar.
GID_TWOFINGERTAP Ketuk dua jari Menunjukkan jarak antara dua jari. Menunjukkan bagian tengah dua jari.
GID_PRESSANDTAP Tekan dan Ketuk Menunjukkan delta antara jari pertama dan jari kedua. Nilai ini disimpan di 32 bit ullArgument yang lebih rendah dalam struktur POINT . Menunjukkan posisi jari pertama turun.

Catatan

Semua jarak dan posisi disediakan dalam koordinat layar fisik.

Catatan

Parameter dwID dan ullArgument hanya boleh dianggap menyertai perintah GID_* dan tidak boleh diubah oleh aplikasi.

Contoh

Kode berikut menggambarkan cara mendapatkan informasi khusus gerakan yang terkait dengan pesan ini.

Catatan

Anda harus selalu meneruskan pesan yang tidak tertangani ke DefWindowProc dan harus menutup handel input gerakan untuk pesan yang Anda tangani dengan panggilan ke CloseGestureInfoHandle. Dalam contoh ini, perilaku handler gerakan default akan ditekan karena handel TOUCHINPUT ditutup di setiap kasus gerakan. Jika Anda menghapus kasus dalam kode di atas untuk pesan yang tidak tertangani, penangan gerakan default akan memproses pesan dengan diteruskan ke DefWindowProc dalam kasus default.

  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

Persyaratan Nilai
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

Pemberitahuan

Panduan Pemrograman Gerakan Sentuh Windows