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

ClientToScreen

Fonctions d’espace de coordonnées et de transformation

Vue d’ensemble des espaces de coordonnées et des transformations

POINT

RECT

ScreenToClient