Функция CalculatePopupWindowPosition (winuser.h)

Вычисляет соответствующую позицию всплывающего окна, используя указанную точку привязки, размер всплывающего окна, флаги и необязательный прямоугольник исключения. Если указанный размер всплывающего окна меньше размера окна рабочего стола, используйте функцию CalculatePopupWindowPosition , чтобы убедиться, что всплывающее окно полностью отображается в окне рабочего стола, независимо от указанной точки привязки.

Синтаксис

BOOL CalculatePopupWindowPosition(
  [in]           const POINT *anchorPoint,
  [in]           const SIZE  *windowSize,
  [in]           UINT        flags,
  [in, optional] RECT        *excludeRect,
  [out]          RECT        *popupWindowPosition
);

Параметры

[in] anchorPoint

Тип: const POINT*

Указанная точка привязки.

[in] windowSize

Тип: const SIZE*

Указанный размер окна.

[in] flags

Тип: UINT

Используйте один из следующих флагов, чтобы указать, как функция размещает всплывающее окно по горизонтали и вертикали. Флаги совпадают с флагами вертикального и горизонтального позиционирования функции TrackPopupMenuEx .

Используйте один из следующих флагов, чтобы указать, как функция размещает всплывающее окно по горизонтали.

Значение Значение
TPM_CENTERALIGN
0x0004L
Центр всплывающего окна по горизонтали относительно координаты, указанной параметром anchorPoint-x>.
TPM_LEFTALIGN
0x0000L
Размещает всплывающее окно таким образом, чтобы его левый край был выровнен по координате, заданной параметром anchorPoint-x>.
TPM_RIGHTALIGN
0x0008L
Размещает всплывающее окно таким образом, чтобы его правый край был выровнен по координате, заданной параметром anchorPoint-x>.
 

Использует один из следующих флагов, чтобы указать, как функция размещает всплывающее окно по вертикали.

Значение Значение
TPM_BOTTOMALIGN
0x0020L
Размещает всплывающее окно таким образом, чтобы его нижний край был выровнен по координате, заданной параметром anchorPoint-y>.
TPM_TOPALIGN
0x0000L
Размещает всплывающее окно таким образом, чтобы его верхний край был выровнен по координате, заданной параметром anchorPoint-y>.
TPM_VCENTERALIGN
0x0010L
Центр всплывающего окна по вертикали относительно координаты, заданной параметром anchorPoint-y>.
 

Используйте один из следующих флагов, чтобы указать, следует ли размещать горизонтальное или вертикальное выравнивание.

Значение Значение
TPM_HORIZONTAL
0x0000L
Если всплывающее окно не может отображаться в указанном месте без перекрытия исключенного прямоугольника, система пытается разместить запрошенное горизонтальное выравнивание до запрошенного вертикального выравнивания.
TPM_VERTICAL
0x0040L
Если всплывающее окно не может отображаться в указанном месте без перекрытия исключенного прямоугольника, система пытается разместить запрошенное вертикальное выравнивание до запрошенного горизонтального выравнивания.
 

Следующий флаг доступен начиная с Windows 7.

Значение Значение
TPM_WORKAREA
0x10000L
Ограничивает всплывающее окно только в рабочей области. Если этот флаг не установлен, всплывающее окно ограничивается рабочей областью, только если точка ввода находится в рабочей области. Дополнительные сведения см. в разделах элементы rcWork и rcMonitor структуры MONITORINFO .

[in, optional] excludeRect

Тип: RECT*

Указатель на структуру, задающую прямоугольник исключения. Может иметь значение NULL.

[out] popupWindowPosition

Тип: RECT*

Указатель на структуру, задающую позицию всплывающего окна.

Возвращаемое значение

Тип: BOOL

Если функция выполнена успешно, она возвращает значение TRUE; в противном случае возвращается значение FALSE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

TPM_WORKAREA поддерживается для функций TrackPopupMenu и TrackPopupMenuEx .

Требования

   
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел

Справочные материалы

TrackPopupMenu

TrackPopupMenuEx