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 函数的垂直定位标志和水平定位标志相同。
使用以下标志之一指定函数如何水平定位弹出窗口。
值 | 含义 |
---|---|
|
相对于 anchorPoint-x> 参数指定的坐标水平居中弹出窗口。 |
|
定位弹出窗口,使其左边缘与 anchorPoint-x> 参数指定的坐标对齐。 |
|
定位弹出窗口,使其右边缘与 anchorPoint-x> 参数指定的坐标对齐。 |
使用以下标志之一指定函数垂直定位弹出窗口的方式。
值 | 含义 |
---|---|
|
定位弹出窗口,使其下边缘与 anchorPoint-y> 参数指定的坐标对齐。 |
|
定位弹出窗口,使其上边缘与 anchorPoint-y> 参数指定的坐标对齐。 |
|
相对于 anchorPoint-y> 参数指定的坐标,将弹出窗口垂直居中。 |
使用以下标志之一指定是适应水平对齐还是垂直对齐。
值 | 含义 |
---|---|
|
如果弹出窗口无法在不重叠排除的矩形的情况下在指定位置显示,则系统会尝试在请求的垂直对齐之前适应请求的水平对齐。 |
|
如果弹出窗口无法在不重叠排除的矩形的情况下在指定位置显示,则系统会尝试在请求的水平对齐之前适应请求的垂直对齐。 |
以下标志从 Windows 7 开始可用。
值 | 含义 |
---|---|
|
将弹出窗口限制在工作区内。 如果未设置此标志,则仅当输入点在工作区内时,弹出窗口将限制为工作区。 有关详细信息,请参阅 MONITORINFO 结构的 rcWork 和 rcMonitor 成员。 |
[in, optional] excludeRect
类型: RECT*
指向结构的指针,该结构指定排除矩形。 它可以是 NULL。
[out] popupWindowPosition
类型: RECT*
指向结构的指针,该结构指定弹出窗口位置。
返回值
类型: BOOL
如果函数成功,则返回 TRUE;否则,它将返回 FALSE。 要获得更多的错误信息,请调用 GetLastError。
注解
TrackPopupMenu 和 TrackPopupMenuEx 函数支持TPM_WORKAREA。
要求
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
另请参阅
引用