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