GetMouseMovePointsEx, fonction (winuser.h)
Récupère l’historique des coordonnées de la souris ou du stylet (64 maximum).
Syntaxe
int GetMouseMovePointsEx(
[in] UINT cbSize,
[in] LPMOUSEMOVEPOINT lppt,
[out] LPMOUSEMOVEPOINT lpptBuf,
[in] int nBufPoints,
[in] DWORD resolution
);
Paramètres
[in] cbSize
Type : UINT
Taille, en octets, de la structure MOUSEMOVEPOINT .
[in] lppt
Type : LPMOUSEMOVEPOINT
Pointeur vers une structure MOUSEMOVEPOINT contenant des coordonnées de souris valides (dans les coordonnées de l’écran). Il peut également contenir un horodatage.
La fonction GetMouseMovePointsEx recherche le point dans l’historique des coordonnées de la souris. Si la fonction trouve le point, elle retourne les derniers nBufPoints avant et y compris le point fourni.
Si votre application fournit un horodatage, la fonction GetMouseMovePointsEx l’utilise pour différencier deux points égaux qui ont été enregistrés à des moments différents.
Une application doit appeler cette fonction à l’aide des coordonnées de la souris reçues du message WM_MOUSEMOVE et les convertir en coordonnées d’écran.
[out] lpptBuf
Type : LPMOUSEMOVEPOINT
Pointeur vers une mémoire tampon qui recevra les points. Il doit avoir au moins la taille denBufPointscbSize* .
[in] nBufPoints
Type : int
Nombre de points à récupérer.
[in] resolution
Type : DWORD
Résolution souhaitée. Ce paramètre peut prendre les valeurs suivantes.
Valeur retournée
Type : int
Si la fonction réussit, la valeur de retour est le nombre de points dans la mémoire tampon. Sinon, la fonction retourne –1. Pour obtenir des informations d’erreur étendues, votre application peut appeler GetLastError.
Remarques
Le système conserve les 64 dernières coordonnées de la souris et leurs horodatages. Si votre application fournit une coordonnée de souris à GetMouseMovePointsEx et que la coordonnée existe dans l’historique des coordonnées de souris du système, la fonction récupère le nombre spécifié de coordonnées à partir de l’historique des systèmes. Vous pouvez également fournir un horodatage, qui sera utilisé pour différencier des points identiques dans l’historique.
La fonction GetMouseMovePointsEx retourne des points qui ont finalement été distribués non seulement au thread appelant, mais également à d’autres threads.
GetMouseMovePointsEx peut échouer ou retourner des valeurs erronées dans les cas suivants :
- Si les coordonnées négatives sont passées dans la structure MOUSEMOVEPOINT .
- Si GetMouseMovePointsEx récupère une coordonnée avec une valeur négative.
- SM_XVIRTUALSCREEN,
- SM_YVIRTUALSCREEN,
- SM_CXVIRTUALSCREEN, et
- 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 ;
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Voir aussi
Conceptuel
Référence