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