Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mendapatkan seluruh bingkai informasi berbasis pena (termasuk bingkai input yang dikoales) untuk pointer yang ditentukan (jenis PT_PEN) yang terkait dengan pesan saat ini.
Sintaks
BOOL GetPointerFramePenInfoHistory(
[in] UINT32 pointerId,
[in, out] UINT32 *entriesCount,
[in, out] UINT32 *pointerCount,
[out, optional] POINTER_PEN_INFO *penInfo
);
Parameter
[in] pointerId
Pengidentifikasi pointer untuk mengambil informasi bingkai.
[in, out] entriesCount
Penunjuk ke variabel yang menentukan jumlah baris dalam array dua dimensi tempat penInfo menunjuk. Jika GetPointerFramePenInfoHistory berhasil, entriesCount diperbarui dengan jumlah total bingkai yang tersedia dalam riwayat.
[in, out] pointerCount
Penunjuk ke variabel yang menentukan jumlah kolom dalam array dua dimensi tempat penInfo menunjuk. Jika GetPointerFramePenInfoHistory berhasil, pointerCount diperbarui dengan jumlah total pointer di setiap bingkai.
[out, optional] penInfo
Alamat array dua dimensi struktur POINTER_PEN_INFO untuk menerima informasi penunjuk. Parameter ini dapat berupa NULL jika *entriesCount dan *pointerCount keduanya nol.
Array ini ditafsirkan sebagai POINTER_PEN_INFO[*entriesCount][*pointerCount].
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Perangkat mode paralel dapat melaporkan input pointer dalam bingkai, yaitu, perangkat dapat melaporkan status dan posisi semua pointer dari perangkat tersebut dalam satu laporan input ke sistem. Idealnya, aplikasi harus melihat seluruh bingkai sebagai input tunggal kecuali persyaratan khusus aplikasi menentukan sebaliknya.
Informasi yang dikembalikan oleh GetPointerFramePenInfo dikaitkan dengan pesan pointer terbaru (PT_PEN) yang diambil oleh utas panggilan. Ketika pesan berikutnya diambil oleh utas panggilan, informasi yang terkait dengan pesan sebelumnya mungkin tidak lagi tersedia.
Jika aplikasi tidak memproses pesan input pointer secepat yang dihasilkan, beberapa pesan mungkin digabungkan ke dalam pesan WM_POINTERUPDATE . Gunakan GetPointerFramePenInfoHistory untuk mengambil riwayat pesan (termasuk bingkai input yang digabungkan) dari pesan WM_POINTERUPDATE terbaru.
Setelah mengambil seluruh bingkai informasi, aplikasi kemudian dapat memanggil fungsi SkipPointerFrameMessages untuk melewati pesan pointer yang tersisa yang terkait dengan bingkai ini yang menunggu pengambilan. Ini menyimpan aplikasi overhead pengambilan dan pemrosesan pesan yang tersisa satu per satu. Namun, fungsi SkipPointerFrameMessages harus digunakan dengan hati-hati dan hanya ketika pemanggil dapat memastikan bahwa tidak ada entitas lain pada utas pemanggil yang mengharapkan untuk melihat pesan pointer yang tersisa satu per satu saat mereka diambil.
Bingkai hanya berisi penunjuk yang saat ini dimiliki oleh jendela yang sama dengan penunjuk yang ditentukan.
Informasi yang diambil mewakili array dua dimensi dengan satu baris untuk setiap entri riwayat dan satu kolom untuk setiap penunjuk dalam bingkai.
Informasi yang diambil muncul dalam urutan kronologis terbalik, dengan entri terbaru di baris pertama dari array yang dikembalikan. Entri terbaru sama dengan yang dikembalikan oleh fungsi GetPointerFramePenInfo .
Jika jumlah baris dalam buffer yang disediakan tidak cukup untuk menyimpan semua entri riwayat yang tersedia, fungsi ini berhasil dengan buffer yang berisi entri terbaru dan *entriesCount yang berisi jumlah total entri yang tersedia.
Jika bingkai penunjuk tidak berisi penunjuk tambahan selain penunjuk yang ditentukan, fungsi ini berhasil dan hanya mengembalikan informasi untuk penunjuk yang ditentukan.
Jika informasi yang terkait dengan bingkai penunjuk tidak lagi tersedia, fungsi ini gagal dengan kesalahan terakhir yang diatur ke ERROR_NO_DATA.
Jika utas panggilan tidak memiliki jendela (di mana input awalnya dikirim atau di mana pesan diteruskan) tempat pesan penunjuk dikirimkan, fungsi ini gagal dengan kesalahan terakhir diatur ke ERROR_ACCESS_DENIED.
Jika penunjuk yang ditentukan bukan berjenis PT_PEN, fungsi ini gagal dengan kesalahan terakhir yang diatur ke ERROR_DATATYPE_MISMATCH.
Untuk aplikasi yang memiliki area klien dan non-klien, bingkai input dapat menyertakan data klien dan non-klien. Untuk membedakan antara data klien dan non-klien, Anda harus melakukan pengujian hit pada jendela target.
Kami merekomendasikan hal berikut jika Anda ingin memfilter data dari bingkai input:
- Untuk setiap pembaruan yang tidak menyertakan kontak pointer ( POINTER_FLAG_UPDATE tanpa POINTER_FLAG_INCONTACT), tekan pengujian untuk menentukan apakah input adalah klien atau non-klien.
- Untuk setiap kontak baru (POINTER_FLAG_DOWN), tekan uji untuk menentukan apakah input adalah klien atau non-klien dan lacak info ini.
- Untuk setiap pembaruan yang menyertakan kontak pointer ( POINTER_FLAG_UPDATE dengan POINTER_FLAG_INCONTACT), gunakan info pelacakan untuk menentukan apakah input adalah klien atau non-klien.
- Untuk setiap POINTER_FLAG_UP, gunakan info pelacakan untuk menentukan apakah input adalah klien atau non-klien lalu hapus pointer ini dari data pelacakan.
Persyaratan
| Klien minimum yang didukung | Windows 8 [hanya aplikasi desktop] |
| Server minimum yang didukung | Windows Server 2012 [hanya aplikasi desktop] |
| Target Platform | Windows |
| Header | winuser.h (sertakan Windows.h) |
| Pustaka | User32.lib |
| DLL | User32.dll |