Bagikan melalui


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.
 
Catatan Jika perangkat keras target pada komputer tidak mendukung hover, ketika bendera TOUCHEVENTF_UP diatur, bendera TOUCHEVENTF_INRANGE dibersihkan. Jika perangkat keras target pada komputer mendukung hover, bendera TOUCHEVENTF_UP dan TOUCHEVENTF_INRANGE akan diatur secara independen.
 
Tabel berikut mencantumkan bendera untuk anggota dwMask .
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

Catatan Dalam contoh berikut, array pInputs tidak diurutkan. Gunakan nilai dwID untuk melacak titik sentuh tertentu.
 
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)

Lihat juga

GetTouchInputInfo

Struktur