MapWindowPoints, fonction (winuser.h)
La fonction MapWindowPoints convertit (mappe) un ensemble de points d’un espace de coordonnées par rapport à une fenêtre en espace de coordonnées par rapport à une autre fenêtre.
Syntaxe
int MapWindowPoints(
[in] HWND hWndFrom,
[in] HWND hWndTo,
[in, out] LPPOINT lpPoints,
[in] UINT cPoints
);
Paramètres
[in] hWndFrom
Handle de la fenêtre à partir de laquelle les points sont convertis. Si ce paramètre a la valeur NULL ou HWND_DESKTOP, les points sont présumés être dans les coordonnées de l’écran.
[in] hWndTo
Handle de la fenêtre vers laquelle les points sont convertis. Si ce paramètre a la valeur NULL ou HWND_DESKTOP, les points sont convertis en coordonnées d’écran.
[in, out] lpPoints
Pointeur vers un tableau de structures POINT qui contiennent l’ensemble de points à convertir. Les points sont en unités d’appareil. Ce paramètre peut également pointer vers une structure RECT , auquel cas le paramètre cPoints doit être défini sur 2.
[in] cPoints
Nombre de structures POINT dans le tableau pointé vers le paramètre lpPoints .
Valeur retournée
Si la fonction réussit, le mot de bas ordre de la valeur de retour est le nombre de pixels ajoutés à la coordonnée horizontale de chaque point source afin de calculer la coordonnée horizontale de chaque point de destination. (En outre, si l’une des valeurs hWndFrom et hWndTo est mise en miroir, chaque coordonnée horizontale résultante est multipliée par -1.) Le mot d’ordre élevé correspond au nombre de pixels ajoutés à la coordonnée verticale de chaque point source afin de calculer la coordonnée verticale de chaque point de destination.
Si la fonction échoue, la valeur de retour est égale à zéro. Appelez SetLastError avant d’appeler cette méthode pour différencier une valeur de retour d’erreur d’une valeur de retour légitime « 0 ».
Remarques
Si hWndFrom ou hWndTo (ou les deux) sont des fenêtres en miroir (c’est-à-dire ont WS_EX_LAYOUTRTL style étendu) et que précisément deux points sont passés dans des lpPoints, MapWindowPoints interprétera ces deux points comme un RECT et permutera automatiquement les champs gauche et droit de ce rectangle pour s’assurer que la gauche n’est pas supérieure à droite. Si un nombre de points autre que 2 est passé dans lpPoints, MapWindowPoints mappe correctement les coordonnées de chacun de ces points séparément. Par conséquent, si vous passez un pointeur vers un tableau de plusieurs rectangles en lpPoints, les nouveaux rectangles peuvent obtenir leur champ gauche supérieur à droit. Ainsi, pour garantir la transformation correcte des coordonnées rectangles, vous devez appeler MapWindowPoints avec un pointeur RECT à la fois, comme illustré dans l’exemple suivant :
RECT rc[10];
for(int i = 0; i < (sizeof(rc)/sizeof(rc[0])); i++)
{
MapWindowPoints(hWnd1, hWnd2, (LPPOINT)(&rc[i]), (sizeof(RECT)/sizeof(POINT)) );
}
En outre, si vous devez mapper précisément deux points indépendants et que vous ne souhaitez pas que la logique RECT leur soit appliquée par MapWindowPoints, pour garantir le résultat correct, vous devez appeler MapWindowPoints avec un pointeur POINT à la fois, comme illustré dans l’exemple suivant :
POINT pt[2];
MapWindowPoints(hWnd1, hWnd2, &pt[0], 1);
MapWindowPoints(hWnd1, hWnd2, &pt[1], 1);
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 |
Ensemble d’API | ext-ms-win-ntuser-window-l1-1-2 (introduit dans Windows 10, version 10.0.10240) |
Voir aussi
Fonctions d’espace de coordonnées et de transformation
Vue d’ensemble des espaces de coordonnées et des transformations