Fungsi GetMouseMovePointsEx (winuser.h)
Mengambil riwayat hingga 64 koordinat mouse atau pena sebelumnya.
Sintaks
int GetMouseMovePointsEx(
[in] UINT cbSize,
[in] LPMOUSEMOVEPOINT lppt,
[out] LPMOUSEMOVEPOINT lpptBuf,
[in] int nBufPoints,
[in] DWORD resolution
);
Parameter
[in] cbSize
Jenis: UINT
Ukuran, dalam byte, dari struktur MOUSEMOVEPOINT .
[in] lppt
Jenis: LPMOUSEMOVEPOINT
Penunjuk ke struktur MOUSEMOVEPOINT yang berisi koordinat mouse yang valid (dalam koordinat layar). Ini mungkin juga berisi stempel waktu.
Fungsi GetMouseMovePointsEx mencari titik dalam riwayat koordinat mouse. Jika fungsi menemukan titiknya, fungsi mengembalikan nBufPoints terakhir sebelum dan menyertakan titik yang disediakan.
Jika aplikasi Anda menyediakan stempel waktu, fungsi GetMouseMovePointsEx akan menggunakannya untuk membedakan antara dua titik yang sama yang direkam pada waktu yang berbeda.
Aplikasi harus memanggil fungsi ini menggunakan koordinat mouse yang diterima dari pesan WM_MOUSEMOVE dan mengonversinya ke koordinat layar.
[out] lpptBuf
Jenis: LPMOUSEMOVEPOINT
Penunjuk ke buffer yang akan menerima poin. Ukurannya harus setidaknya cbSize* nBufPoints .
[in] nBufPoints
Jenis: int
Jumlah titik yang akan diambil.
[in] resolution
Jenis: DWORD
Resolusi yang diinginkan. Parameter ini bisa menjadi salah satu nilai berikut.
Mengembalikan nilai
Jenis: int
Jika fungsi berhasil, nilai yang dikembalikan adalah jumlah titik dalam buffer. Jika tidak, fungsi mengembalikan –1. Untuk informasi kesalahan yang diperluas, aplikasi Anda dapat memanggil GetLastError.
Keterangan
Sistem mempertahankan 64 koordinat mouse terakhir dan stempel waktunya. Jika aplikasi Anda menyediakan koordinat mouse ke GetMouseMovePointsEx dan koordinat ada dalam riwayat koordinat mouse sistem, fungsi mengambil jumlah koordinat yang ditentukan dari riwayat sistem. Anda juga dapat menyediakan stempel waktu, yang akan digunakan untuk membedakan antara titik-titik identik dalam riwayat.
Fungsi GetMouseMovePointsEx akan mengembalikan titik yang akhirnya dikirim tidak hanya ke utas panggilan tetapi juga ke utas lain.
GetMouseMovePointsEx mungkin gagal atau mengembalikan nilai yang salah dalam kasus berikut:
- Jika koordinat negatif diteruskan dalam struktur MOUSEMOVEPOINT .
- Jika GetMouseMovePointsEx mengambil koordinat dengan nilai negatif.
- SM_XVIRTUALSCREEN,
- SM_YVIRTUALSCREEN,
- SM_CXVIRTUALSCREEN, dan
- SM_CYVIRTUALSCREEN.
int nVirtualWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN) ;
int nVirtualHeight = GetSystemMetrics(SM_CYVIRTUALSCREEN) ;
int nVirtualLeft = GetSystemMetrics(SM_XVIRTUALSCREEN) ;
int nVirtualTop = GetSystemMetrics(SM_YVIRTUALSCREEN) ;
int cpt = 0 ;
int mode = GMMP_USE_DISPLAY_POINTS ;
MOUSEMOVEPOINT mp_in ;
MOUSEMOVEPOINT mp_out[64] ;
ZeroMemory(&mp_in, sizeof(mp_in)) ;
mp_in.x = pt.x & 0x0000FFFF ;//Ensure that this number will pass through.
mp_in.y = pt.y & 0x0000FFFF ;
cpt = GetMouseMovePointsEx(&mp_in, &mp_out, 64, mode) ;
for (int i = 0; i < cpt; i++)
{
switch(mode)
{
case GMMP_USE_DISPLAY_POINTS:
if (mp_out[i].x > 32767)
mp_out[i].x -= 65536 ;
if (mp_out[i].y > 32767)
mp_out[i].y -= 65536 ;
break ;
case GMMP_USE_HIGH_RESOLUTION_POINTS:
mp_out[i].x = ((mp_out[i].x * (nVirtualWidth - 1)) - (nVirtualLeft * 65536)) / nVirtualWidth ;
mp_out[i].y = ((mp_out[i].y * (nVirtualHeight - 1)) - (nVirtualTop * 65536)) / nVirtualHeight ;
break ;
}
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (sertakan Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Lihat juga
Konseptual
Referensi
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk