Struktur TOUCHINPUT (winuser.h)
Merangkum data untuk input sentuh.
Sintaks
typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
Anggota
x
Koordinat x (titik horizontal) dari input sentuhan. Anggota ini ditunjukkan dalam seratus piksel koordinat layar fisik.
y
Koordinat y (titik vertikal) dari input sentuhan. Anggota ini ditunjukkan dalam seratus piksel koordinat layar fisik.
hSource
Handel perangkat untuk perangkat input sumber. Setiap perangkat diberi penyedia unik pada waktu proses oleh penyedia input sentuh. Lihat bagian Contoh di bawah ini.
dwID
Pengidentifikasi titik sentuh yang membedakan input sentuhan tertentu. Nilai ini tetap konsisten dalam urutan kontak sentuh dari titik kontak turun sampai muncul kembali. ID dapat digunakan kembali nanti untuk kontak berikutnya.
dwFlags
Sekumpulan bendera bit yang menentukan berbagai aspek tekan, rilis, dan gerakan titik sentuh. Bit dalam anggota ini dapat menjadi kombinasi nilai yang wajar di bagian Keterangan.
dwMask
Sekumpulan bendera bit yang menentukan bidang opsional mana dalam struktur yang berisi nilai yang valid. Ketersediaan informasi yang valid di bidang opsional adalah khusus perangkat. Aplikasi harus menggunakan nilai bidang opsional hanya ketika bit yang sesuai diatur dalam dwMask. Bidang ini mungkin berisi kombinasi bendera dwMask yang disebutkan di bagian Keterangan.
dwTime
Stempel waktu untuk peristiwa, dalam milidetik. Aplikasi yang menggunakan harus dicatat bahwa sistem tidak melakukan validasi pada bidang ini; ketika bendera TOUCHINPUTMASKF_TIMEFROMSYSTEM tidak diatur, akurasi dan urutan nilai di bidang ini sepenuhnya tergantung pada penyedia input sentuhan.
dwExtraInfo
Nilai tambahan yang terkait dengan peristiwa sentuhan.
cxContact
Lebar area kontak sentuh dalam seratus piksel dalam koordinat layar fisik. Nilai ini hanya valid jika anggota dwMask memiliki set bendera TOUCHEVENTFMASK_CONTACTAREA .
cyContact
Tinggi area kontak sentuh dalam seratus piksel dalam koordinat layar fisik. Nilai ini hanya valid jika anggota dwMask memiliki set bendera TOUCHEVENTFMASK_CONTACTAREA .
Keterangan
Tabel berikut mencantumkan bendera untuk anggota dwFlags .
Bendera | Nilai | Deskripsi |
---|---|---|
TOUCHEVENTF_MOVE | 0x0001 | Gerakan telah terjadi. Tidak dapat digabungkan dengan TOUCHEVENTF_DOWN. |
TOUCHEVENTF_DOWN | 0x0002 | Titik sentuh yang sesuai dibuat melalui kontak baru. Tidak dapat digabungkan dengan TOUCHEVENTF_MOVE atau TOUCHEVENTF_UP. |
TOUCHEVENTF_UP | 0x0004 | Titik sentuh dihapus. |
TOUCHEVENTF_INRANGE | 0x0008 | Titik sentuh dalam jangkauan. Bendera ini digunakan untuk mengaktifkan dukungan hover sentuh pada perangkat keras yang kompatibel. Aplikasi yang tidak menginginkan dukungan untuk hover dapat mengabaikan bendera ini. |
TOUCHEVENTF_PRIMARY | 0x0010 | Menunjukkan bahwa struktur TOUCHINPUT ini sesuai dengan titik kontak utama. Lihat teks berikut untuk informasi selengkapnya tentang titik sentuh utama. |
TOUCHEVENTF_NOCOALESCE | 0x0020 | Ketika diterima menggunakan GetTouchInputInfo, input ini tidak digabungkan. |
TOUCHEVENTF_PEN | 0x0040 | Peristiwa sentuhan dipicu oleh perangkat stylus. |
TOUCHEVENTF_PALM | 0x0080 | Peristiwa sentuhan dipicu oleh telapak tangan pengguna. |
Bendera | Nilai | Deskripsi |
---|---|---|
TOUCHINPUTMASKF_CONTACTAREA | 0x0004 | cxContact dan cyContact valid. Lihat teks berikut untuk informasi selengkapnya tentang titik sentuh utama. |
TOUCHINPUTMASKF_EXTRAINFO | 0x0002 | dwExtraInfo valid. |
TOUCHINPUTMASKF_TIMEFROMSYSTEM | 0x0001 | Waktu sistem diatur dalam struktur TOUCHINPUT . |
Titik sentuh ditetapkan sebagai primer ketika merupakan titik sentuh pertama yang ditetapkan dari keadaan sebelumnya tanpa titik sentuh. Bendera TOUCHEVENTF_PRIMARY terus diatur untuk semua peristiwa berikutnya untuk titik sentuh utama hingga titik sentuh utama dilepaskan. Perhatikan bahwa peristiwa TOUCHEVENTF_UP pada titik sentuh utama tidak selalu menunjuk akhir operasi Windows Touch; operasi Windows Touch saat ini berlanjut dari pembentukan titik sentuh utama hingga titik sentuh terakhir dilepaskan.
Perhatikan bahwa titik sentuh soliter atau, dalam satu set titik sentuh simultan, yang pertama terdeteksi, ditetapkan sebagai yang utama. Posisi mouse sistem mengikuti titik sentuh utama dan, selain pesan sentuhan, juga menghasilkan pesan WM_LBUTTONDOWN, WM_MOUSEMOVE, dan WM_LBUTTONUP sebagai respons terhadap tindakan pada titik sentuh utama. Titik sentuh utama juga dapat menghasilkan pesan WM_RBUTTONDOWN dan WM_RBUTTONUP menggunakan gerakan tekan dan tahan.
Perhatikan bahwa pengidentifikasi titik sentuh mungkin dinamis dan dikaitkan dengan titik sentuh tertentu hanya selama titik sentuh bertahan. Jika kontak rusak lalu dilanjutkan (misalnya, jika jari dihapus dari permukaan dan kemudian ditekan lagi), titik sentuh yang sama (jari, pena, atau perangkat tersebut yang sama) mungkin menerima pengidentifikasi titik sentuh yang berbeda.
Jenis berikut didefinisikan untuk mewakili penunjuk konstan ke struktur TOUCHINPUT .
typedef TOUCHINPUT const * PCTOUCHINPUT;
Contoh
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
if (GetTouchInputInfo((HTOUCHINPUT)lParam,
cInputs,
pInputs,
sizeof(TOUCHINPUT)))
{
// process pInputs
if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
{
// error handling
}
}
else
{
// GetLastError() and error handling
}
delete [] pInputs;
}
else
{
// error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);
Contoh berikut menunjukkan cara mendapatkan informasi perangkat dari anggota hSource . Contoh ini menggunakan GetRawInputDevice untuk mengambil informasi tentang perangkat.
for (UINT i = 0; i < cInputs; i++){
TOUCHINPUT ti = pInputs[i];
RID_DEVICE_INFO info;
ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
info.cbSize = sizeof(RID_DEVICE_INFO);
UINT size = 0;
if (GetRawInputDeviceInfo(ti.hSource, RIDI_DEVICEINFO, &info, &size)){
}else{
DWORD err = GetLastError();
}
}
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 (sertakan Windows.h) |