Функция MapWindowPoints преобразует (отображает) ряд точек относительно координатного пространства одного окна относительно координатного пространства другого окна.
Синтаксис
int MapWindowPoints( HWND hWndFrom, // дескриптор исходного окна HWND hWndTo, // дескриптор предназначенного окна LPPOINT lpPoints, // массив отображаемых точек UINT cPoints // число точек в массиве ); |
hWndFrom
[in] Дескриптор окна из которого преобразуются точки. Если этот параметр - НУЛЬ (NULL) или HWND_DESKTOP, то предполагается, что точки, находятся в экранных координатах.
hWndTo
[in] Дескриптор окна, в котором преобразуются точки. Если этот параметр - НУЛЬ (NULL) или HWND_DESKTOP, точки преобразуются в экранных координатах.
lpPoints
[in/out] Указатель на массив структур POINT, которые содержат набор преобразуемых точек. Координаты точек измеряются в единицах устройства. Этот параметр может также указать на структуру RECT, когда параметр cPoints должен быть установлен в 2.
cPoints
[in] Определяет, что число структур POINT в массиве, указанное при помощи параметра lpPoints.
Если функция завершается успешно, младшее слово возвращаемого значения - число пикселей, добавленное к горизонтальной координате каждой исходной точки, чтобы вычислить горизонтальную координату каждой целевой точки; старшее слово - число пикселей, добавленное к вертикальной координате каждой исходной точки, чтобы вычислить вертикальную координату каждой целевой точки.
Если функция завершается ошибкой, возвращаемое значение - нуль.
Windows NT/2000/XP: Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Если параметры hWndFrom или hWndTo (или оба) представляют зеркалированные окна (то есть, имеющие расширенный стиль WS_EX_LAYOUTRTL), то функция MapWindowPoints автоматически настраивает зеркалируемые координаты, если Вы пересылаете две или меньше точки в lpPoints. Если Вы перешлете больше, а не две точки, то, хотя функция и не завершаться ошибкой, но возвратит неправильные позиции. Таким образом, чтобы гарантировать правильное преобразование координат прямоугольника, Вы должны вызвать функцию 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)) ); } |
Смотри также
Обзор Координатные пространства и преобразования, Функции, используемые координатными пространствами и преобразованиями, ClientToScreen, POINT, RECT, ScreenToClient
Размещение и совместимость MapWindowPoints |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да версии 3.1 и старше |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека | User32.lib | |
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в | Winuser.h | |
- включено в | Windows.h | |
Unicode | Нет | |
Замечания по платформе | Не имеется |