MapWindowPoints 함수(winuser.h)
MapWindowPoints 함수는 한 창을 기준으로 한 좌표 공간에서 다른 창을 기준으로 좌표 공간으로 점 집합을 변환(매핑)합니다.
구문
int MapWindowPoints(
[in] HWND hWndFrom,
[in] HWND hWndTo,
[in, out] LPPOINT lpPoints,
[in] UINT cPoints
);
매개 변수
[in] hWndFrom
지점이 변환되는 창에 대한 핸들입니다. 이 매개 변수가 NULL 이거나 HWND_DESKTOP 점이 화면 좌표로 추정됩니다.
[in] hWndTo
지점이 변환되는 창에 대한 핸들입니다. 이 매개 변수가 NULL 이거나 HWND_DESKTOP 점이 화면 좌표로 변환됩니다.
[in, out] lpPoints
변환할 점 집합을 포함하는 POINT 구조체의 배열에 대한 포인터입니다. 지점은 디바이스 단위로 표시됩니다. 이 매개 변수는 RECT 구조를 가리킬 수도 있습니다. 이 경우 cPoints 매개 변수를 2로 설정해야 합니다.
[in] cPoints
lpPoints 매개 변수가 가리키는 배열의 POINT 구조체 수입니다.
반환 값
함수가 성공하면 반환 값의 하위 단어는 각 대상 지점의 가로 좌표를 계산하기 위해 각 원본 점의 가로 좌표에 추가된 픽셀 수입니다. 또한 hWndFrom 및 hWndTo 중 하나를 정확하게 미러링하면 결과 가로 좌표 각각에 -1을 곱합니다. 상위 단어는 각 대상 지점의 세로 좌표를 계산하기 위해 각 원본 지점의 세로 좌표에 추가된 픽셀 수입니다.
함수가 실패하면 반환 값은 0입니다. 이 메서드를 호출하기 전에 SetLastError 를 호출하여 오류 반환 값을 합법적인 "0" 반환 값과 구분합니다.
설명
hWndFrom 또는 hWndTo(또는 둘 다)가 미러된 창(즉, 확장 스타일이 WS_EX_LAYOUTRTL 있음)이고 정확히 두 점이 lpPoints에 전달되는 경우 MapWindowPoints는 이 두 점을 RECT로 해석하고 해당 사각형의 왼쪽 및 오른쪽 필드를 자동으로 교환하여 왼쪽이 오른쪽보다 크지 않도록 합니다. lpPoints에 2개 이외의 점이 전달되는 경우 MapWindowPoints는 각 점의 좌표를 개별적으로 올바르게 매핑하므로 lpPoint에서 둘 이상의 사각형 배열에 포인터를 전달하면 새 사각형이 왼쪽 필드를 오른쪽보다 크게 가져올 수 있습니다. 따라서 사각형 좌표의 올바른 변환을 보장하려면 다음 예제와 같이 한 번에 하나의 RECT 포인터를 사용하여 MapWindowPoints를 호출해야 합니다.
RECT rc[10];
for(int i = 0; i < (sizeof(rc)/sizeof(rc[0])); i++)
{
MapWindowPoints(hWnd1, hWnd2, (LPPOINT)(&rc[i]), (sizeof(RECT)/sizeof(POINT)) );
}
또한 두 개의 독립 지점을 정확하게 매핑해야 하고 MapWindowPoints에서 RECT 논리를 적용하지 않으려는 경우 다음 예제와 같이 한 번에 하나의 POINT 포인터를 사용하여 MapWindowPoints를 호출해야 합니다.
POINT pt[2];
MapWindowPoints(hWnd1, hWnd2, &pt[0], 1);
MapWindowPoints(hWnd1, hWnd2, &pt[1], 1);
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | winuser.h(Windows.h 포함) |
라이브러리 | User32.lib |
DLL | User32.dll |
API 세트 | ext-ms-win-ntuser-window-l1-1-2(Windows 10 버전 10.0.10240에 도입됨) |