WM_NCCALCSIZE消息
在必须计算窗口工作区的大小和位置时发送。 通过处理此消息,当窗口的大小或位置发生更改时,应用程序可以控制窗口工作区的内容。
窗口通过其 WindowProc 函数接收此消息。
#define WM_NCCALCSIZE 0x0083
参数
-
wParam
-
如果 wParam 为 TRUE,则指定应用程序应指示工作区的哪个部分包含有效信息。 系统将有效信息复制到新工作区中的指定区域。
如果 wParam 为 FALSE,则应用程序不需要指示工作区的有效部分。
-
lParam
-
如果 wParam 为 TRUE, 则 lParam 指向 NCCALCSIZE_PARAMS 结构,该结构包含应用程序可用于计算客户端矩形的新大小和位置的信息。
如果 wParam 为 FALSE, 则 lParam 指向 RECT 结构。 入口时,结构包含窗口的建议窗口矩形。 退出时,结构应包含相应窗口工作区的屏幕坐标。
返回值
类型: LRESULT
如果 wParam 参数为 FALSE,则应用程序应返回零。
如果 wParam 为 TRUE,则应用程序应返回零或以下值的组合。
如果 wParam 为 TRUE 且应用程序返回零,则会保留旧工作区,并与新工作区的左上角对齐。
返回代码/值 | 说明 |
---|---|
|
指定保留窗口的工作区,并与窗口新位置的顶部对齐。 例如,若要将工作区与左上角对齐,请返回WVR_ALIGNTOP和 WVR_ALIGNLEFT 值。 |
|
指定保留窗口的工作区,并与窗口新位置的右侧对齐。 例如,若要将工作区与右下角对齐,请返回 WVR_ALIGNRIGHT 和WVR_ALIGNBOTTOM值。 |
|
指定保留窗口的工作区,并与窗口新位置的左侧对齐。 例如,若要将工作区与左下角对齐,请返回 WVR_ALIGNLEFT 和 WVR_ALIGNBOTTOM 值。 |
|
指定保留窗口的工作区,并与窗口新位置的底部对齐。 例如,若要将工作区与左上角对齐,请返回WVR_ALIGNTOP和 WVR_ALIGNLEFT 值。 |
|
与除 WVR_VALIDRECTS以外的任何其他值结合使用,如果客户端矩形水平更改大小,则窗口将完全重新绘制。 此值类似于 CS_HREDRAW 类样式 |
|
如果客户端矩形垂直更改大小,则与其他任何值( WVR_VALIDRECTS除外)结合使用会导致完全重绘窗口。 此值类似于 CS_VREDRAW 类样式 |
|
此值会导致重新绘制整个窗口。 它是 WVR_HREDRAW 和 WVR_VREDRAW 值的组合。 |
|
此值指示从WM_NCCALCSIZE返回时,由NCCALCSIZE_PARAMS结构的rgrc[1] 和 rgrc[2] 成员指定的矩形分别包含有效的目标矩形和源区域矩形。 系统将合并这些矩形,以计算要保留的窗口面积。 系统会复制源矩形内窗口图像的任何部分,并将图像剪辑到目标矩形。 这两个矩形都采用父相对坐标或屏幕相对坐标。 此标志不能与任何其他标志组合使用。 此返回值允许应用程序实现更详细的工作区保留策略,例如居中或保留工作区的子集。 |
备注
根据是指定 CS_HREDRAW 还是CS_VREDRAW类样式,可以重新绘制窗口。 这是除上表) 所述的常规客户端矩形计算外, DefWindowProc 函数 (对此消息的默认向后兼容处理。
当 wParam 为 TRUE 时,只需返回 0 而不处理 NCCALCSIZE_PARAMS 矩形将导致工作区调整为窗口大小(包括窗口框架)。 这将删除窗口框架并从窗口中描述文字项,只显示工作区。
从 Windows Vista 开始,只需在 wParam 为 TRUE 时返回 0 即可删除标准帧,不会影响使用 DwmExtendFrameIntoClientArea 函数扩展到工作区的帧。 只会删除标准帧。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
另请参阅
-
引用
-
概念性
-
其他资源