GetMouseMovePointsEx-Funktion (winuser.h)
Ruft einen Verlauf mit bis zu 64 vorheriger Koordinaten der Maus oder des Stifts ab.
Syntax
int GetMouseMovePointsEx(
[in] UINT cbSize,
[in] LPMOUSEMOVEPOINT lppt,
[out] LPMOUSEMOVEPOINT lpptBuf,
[in] int nBufPoints,
[in] DWORD resolution
);
Parameter
[in] cbSize
Typ: UINT
Die Größe der MOUSEMOVEPOINT-Struktur in Bytes.
[in] lppt
Typ: LPMOUSEMOVEPOINT
Ein Zeiger auf eine MOUSEMOVEPOINT-Struktur , die gültige Mauskoordinaten (in Bildschirmkoordinaten) enthält. Es kann auch einen Zeitstempel enthalten.
Die GetMouseMovePointsEx-Funktion sucht nach dem Punkt im Verlauf der Mauskoordinaten. Wenn die Funktion den Punkt findet, gibt sie die letzten nBufPoints vor und einschließlich des angegebenen Punkts zurück.
Wenn Ihre Anwendung einen Zeitstempel bereitstellt, verwendet die GetMouseMovePointsEx-Funktion diesen, um zwischen zwei gleichen Punkten zu unterscheiden, die zu unterschiedlichen Zeiten aufgezeichnet wurden.
Eine Anwendung sollte diese Funktion mithilfe der Mauskoordinaten aufrufen, die von der WM_MOUSEMOVE-Nachricht empfangen werden, und sie in Bildschirmkoordinaten konvertieren.
[out] lpptBuf
Typ: LPMOUSEMOVEPOINT
Ein Zeiger auf einen Puffer, der die Punkte empfängt. Sie sollte mindestens cbSize* nBufPoints groß sein.
[in] nBufPoints
Typ: int
Die Anzahl der abzurufenden Punkte.
[in] resolution
Art: DWORD
Die gewünschte Auflösung. Dieser Parameter kann einen der folgenden Werte annehmen.
Rückgabewert
Typ: int
Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Anzahl der Punkte im Puffer. Andernfalls gibt die Funktion –1 zurück. Für erweiterte Fehlerinformationen kann Ihre Anwendung GetLastError aufrufen.
Hinweise
Das System behält die letzten 64 Mauskoordinaten und deren Zeitstempel bei. Wenn Ihre Anwendung eine Mauskoordinate für GetMouseMovePointsEx bereitstellt und die Koordinate im Mauskoordinatenverlauf des Systems vorhanden ist, ruft die Funktion die angegebene Anzahl von Koordinaten aus dem Systemverlauf ab. Sie können auch einen Zeitstempel angeben, der verwendet wird, um zwischen identischen Punkten im Verlauf zu unterscheiden.
Die GetMouseMovePointsEx-Funktion gibt Punkte zurück, die schließlich nicht nur an den aufrufenden Thread, sondern auch an andere Threads verteilt wurden.
GetMouseMovePointsEx kann in den folgenden Fällen fehlschlagen oder fehlerhafte Werte zurückgeben:
- Wenn negative Koordinaten in der MOUSEMOVEPOINT-Struktur übergeben werden.
- Wenn GetMouseMovePointsEx eine Koordinate mit einem negativen Wert abruft.
- SM_XVIRTUALSCREEN,
- SM_YVIRTUALSCREEN,
- SM_CXVIRTUALSCREEN und
- 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 ;
}
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winuser.h (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |
Siehe auch
Konzept
Referenz