Функция MapWindowPoints


Функция 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 Нет
 Замечания по платформе Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz