MapWindowPoints

A version of this page is also available for

Windows Embedded CE 6.0 R3

4/8/2010

This function converts, or maps, a set of points from a coordinate space relative to one window to a coordinate space relative to another window.

Syntax

int MapWindowPoints( 
  HWND hWndFrom, 
  HWND hWndTo, 
  LPPOINT lpPoints, 
  UINT cPoints
); 

Parameters

  • hWndFrom
    Handle to the window from which points are converted.

    If this parameter is NULL or HWND_DESKTOP, the points are presumed to be in screen coordinates.

  • hWndTo
    Handle to the window to which points are converted.

    If this parameter is NULL or HWND_DESKTOP, the points are converted to screen coordinates.

  • lpPoints
    Long pointer to an array of POINT structures that contain the set of points to be converted.

    This parameter can also point to a RECT structure, in which case the cPoints parameter should be set to 2.

  • cPoints
    Specifies the number of POINT structures in the array pointed to by the lpPoints parameter.

Return Value

If the function succeeds, the low-order word of the return value is the number of pixels added to the horizontal coordinate of each source point to compute the horizontal coordinate of each destination point. The high-order word is the number of pixels added to the vertical coordinate of each source point in order to compute the vertical coordinate of each destination point.

Zero indicates failure except, in the rare case when the origins of the two windows' coordinate spaces are coincident.

To get extended error information, call GetLastError.

Remarks

If hWndFrom or hWndTo (or both) are mirrored windows (that is, they have the WS_EX_LAYOUTRTL extended style), MapWindowPoints will automatically adjust mirrored coordinates if you pass two or less points in lpPoints. If you pass more than two points, the function will not fail but it will return erroneous positions. Thus, to guarantee the correct transformation of rectangle coordinates, you must call MapWindowPoints with two or less points at a time, as shown in the following example:

RECT        rc[10];
for(int i =0; i < (sizeof(rc)/sizeof(rc[0])); i++)
{
  MapWindowPoints(hWnd1, hWnd2, (LPPOINT)(&rc[i]),
                  (sizeof(RECT)/sizeof(POINT)) );
}

Requirements

Header winuser.h
Library coredll.lib, Winmgr.lib
Windows Embedded CE Windows CE 1.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

ClientToScreen
ScreenToClient
POINT
RECT