描述
MapWindowPoints函数将一组点相对于一个窗口转换(映射)到坐标空间相对于另一个窗口的坐标空间。
C++ 语法
int MapWindowPoints( __in HWND hWndFrom, __in HWND hWndTo, __inout LPPOINT lpPoints, __in UINT cPoints ); |
PowerBASIC 语法
FUNCTION MapWindowPoints ( _ BYVAL hWndFrom AS DWORD, _ BYVAL hWndTo AS DWORD, _ BYREF lpPoints AS ANY, _ BYVAL cPoints AS DWORD _ ) AS LONG |
参数
hWndFrom
[in]处理从哪些点转换的窗口。如果此参数为NULL或HWND_DESKTOP,则假定该点处于屏幕坐标。
hWndTo
[in]处理转换到哪个点的窗口。如果此参数为NULL或HWND_DESKTOP,则将这些点转换为屏幕坐标。
lpPoints
[in/out]指向包含要转换的点集合的POINT结构数组的指针。这些点是设备单位。此参数还可以指向RECT结构,在这种情况下,cPointsen参数应设置为2。
cPoints
[in]指定lpPoints参数指向的数组中POINT个结构的数量。
返回值
如果功能成功,则返回值的低位字是为了计算每个目标点的水平坐标而添加到每个源点的水平坐标的像素数;高阶字是为了计算每个目的地点的垂直坐标而添加到每个源点的垂直坐标的像素数。
如果函数失败,返回值为零。在调用此方法之前调用SetLastError以将错误返回值与合法的“0”返回值区分开来。
Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.
备注
如果hWndFrom或hWndTo(或两者)是镜像窗口(即具有WS_EX_LAYOUTRTL扩展样式),MapWindowPoints将自动调整镜像坐标,如果您通过lpPoints中的两个或更少点。如果通过两点以上,则该函数不会失败,但会返回错误的位置。因此,为了保证矩形坐标的正确转换,您必须一次调用MapWindowPoints两个或更少的点,如下例所示:
DIM rc(9) AS RECT
FOR i = 0 TO 9
MapWindowPoints(hWnd1, hWnd2, rc(i), 2)
NEXT
引用文件 #INCLUDE Once
WinUser.inc(包括Windows.inc)