Bagikan melalui


Fungsi SetGestureConfig (winuser.h)

Mengonfigurasi pesan yang dikirim dari jendela untuk gerakan Windows Touch.

Sintaks

BOOL SetGestureConfig(
  [in] HWND           hwnd,
  [in] DWORD          dwReserved,
  [in] UINT           cIDs,
  [in] PGESTURECONFIG pGestureConfig,
  [in] UINT           cbSize
);

Parameter

[in] hwnd

Handel ke jendela untuk mengatur konfigurasi gerakan.

[in] dwReserved

Nilai ini dicadangkan dan harus diatur ke 0.

[in] cIDs

Hitungan struktur konfigurasi gerakan yang sedang dilewati.

[in] pGestureConfig

Array struktur konfigurasi gerakan yang menentukan konfigurasi gerakan.

[in] cbSize

Ukuran struktur konfigurasi gerakan (GESTURECONFIG).

Menampilkan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, gunakan fungsi GetLastError .

Keterangan

Jika Anda tidak berharap untuk mengubah konfigurasi gerakan, panggil SetGestureConfig pada waktu pembuatan jendela. Jika Anda ingin mengubah konfigurasi gerakan secara dinamis, panggil SetGestureConfig sebagai respons terhadap pesan WM_GESTURENOTIFY .

Tabel berikut menunjukkan pengidentifikasi untuk gerakan yang didukung oleh anggota dwID dari struktur GESTURECONFIG . Perhatikan bahwa pengaturan dwID ke 0 menunjukkan bahwa bendera konfigurasi gerakan global diatur.

Nama Nilai Deskripsi
GID_ZOOM 3 Pengaturan konfigurasi untuk 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.
 

Bendera berikut digunakan saat dwID diatur ke nol.

Nama Nilai Deskripsi
GC_ALLGESTURES 0x00000001 Semua isyarat.
 

Bendera berikut digunakan saat dwID diatur ke GID_ZOOM.

Nama Nilai Deskripsi
GC_ZOOM 0x00000001 Gerakan zoom.
 

Bendera berikut digunakan saat dwID diatur ke GID_PAN.

Nama Nilai Deskripsi
GC_PAN 0x00000001 Semua gerakan pan.
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002 Geser vertikal dengan satu jari.
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004 Geser horizontal dengan satu jari.
GC_PAN_WITH_GUTTER 0x00000008 Panning dengan batas selokan di sekitar tepi wilayah pannable. Batas selokan membatasi pergerakan tegak lurus ke arah utama hingga ambang batas tercapai untuk keluar dari selokan.
GC_PAN_WITH_INTERTIA 0x00000010 Panning dengan inertia agar pelan saat gerakan panci berhenti.
 
Catatan Gerakan pan dapat digunakan bersama satu sama lain untuk mengontrol perilaku. Misalnya, mengatur bit dwWant untuk menggeser dengan horizontal satu jari dan mengatur bit dwBlock ke vertikal satu jari akan membatasi panning ke panning horizontal. Mengubah bit dwWant untuk memiliki GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY dan melepas geser vertikal satu jari dari bit dwBlock akan mengaktifkan pengalihan vertikal dan horizontal.
 
Catatan Secara default, panning mengaktifkan inertia.
 
Catatan Satu panggilan ke SetGestureConfig tidak dapat menyertakan GID lain bersama dengan 0.
 
Bendera berikut digunakan saat dwID diatur ke GID_ROTATE.
Nama Nilai Deskripsi
GC_ROTATE 0x00000001 Gerakan rotasi.
 

Bendera berikut digunakan saat dwID diatur ke GID_TWOFINGERTAP.

Nama Nilai Deskripsi
GC_TWOFINGERTAP 0x00000001 Gerakan ketuk dua jari.
 

Bendera berikut digunakan saat dwID diatur ke GID_PRESSANDTAP.

Nama Nilai Deskripsi
GC_PRESSANDTAP 0x00000001 Tekan dan ketuk gerakan.
 
Catatan Memanggil SetGestureConfig akan mengubah konfigurasi gerakan untuk masa pakai Jendela, bukan hanya untuk gerakan berikutnya.
 

Contoh

Contoh berikut menunjukkan bagaimana Anda bisa menerima panning satu jari horizontal dan vertikal tanpa selokan dan tanpa inertia. Ini adalah konfigurasi umum untuk aplikasi navigasi 2-D seperti aplikasi Microsoft PixelSense Globe.

// set up our want / block settings
DWORD dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, dwPanWant , dwPanBlock}                     
                     };    
                     
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Contoh berikut menunjukkan cara menerima gerakan gestur satu jari dan menonaktifkan penggeseran selokan. Ini adalah konfigurasi umum untuk aplikasi yang menggulir teks seperti Notepad.

Catatan Anda harus secara eksplisit mengatur semua bendera yang ingin Anda aktifkan atau nonaktifkan saat mengontrol panning satu jari.
 
// set up our want / block settings
DWORD dwPanWant  = GC_PAN | GC_PAN_WITH_SINGLE_FINGER_VERTICALLY;                    
DWORD dwPanBlock = GC_PAN_WITH_GUTTER;    

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, dwPanWant , dwPanBlock}                     
                     };    
                     
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}   

Contoh berikut menunjukkan bagaimana Anda dapat menonaktifkan semua gerakan.

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {0,0,GC_ALLGESTURES};
                     
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Contoh berikut menunjukkan bagaimana Anda dapat mengaktifkan semua gerakan.

GESTURECONFIG gc = {0,GC_ALLGESTURES,0};

UINT uiGcs = 1;

BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, &gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}              

Contoh berikut menunjukkan bagaimana Anda dapat mengaktifkan semua gerakan Windows 7.

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, GC_PAN , 0},
                      { GID_TWOFINGERTAP, GC_TWOFINGERTAP , 0},
                      { GID_PRESSANDTAP, GC_PRESSANDTAP , 0}
                     };    
                     
UINT uiGcs = 5;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Contoh konfigurasi berikut akan mengatur jendela induk untuk mengaktifkan dukungan untuk zoom, geser horizontal, dan geser vertikal sementara jendela turunan hanya akan mendukung geser horizontal.

// set up our want / block settings for a parent window
DWORD dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;

// set the settings in the gesture configuration
GESTURECONFIG gcParent[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                            { GID_PAN, dwPanWant , dwPanBlock}                         
                           };    

// Set the pan settings for a child window
dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
dwPanBlock = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
                     
GESTURECONFIG gcChild[]  = {{ GID_ZOOM, 0, GC_ZOOM },
                            { GID_PAN, dwPanWant , dwPanBlock}                         
                           };    

UINT uiGcs   = 2;
BOOL bResult = FALSE;
                     
if (isParent){      
  bResult = SetGestureConfig(hWnd, 0, uiGcs, gcParent, sizeof(GESTURECONFIG));  
}else{
  bResult = SetGestureConfig(hWnd, 0, uiGcs, gcChild, sizeof(GESTURECONFIG));  
}

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Persyaratan

   
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll

Lihat juga

Fungsi

GESTURECONFIG

GetGestureConfig

Panduan Pemrograman untuk Gerakan

WM_GESTURENOTIFY