WM _ NCCALCSIZE 消息

当必须计算窗口工作区的大小和位置时发送。 通过处理此消息,当窗口的大小或位置发生更改时,应用程序可以控制窗口的工作区的内容。

窗口通过其 WindowProc 函数接收此消息。

#define WM_NCCALCSIZE                   0x0083

parameters

wParam

如果 wParamTRUE,则它指定应用程序应指示客户端区域的哪一部分包含有效信息。 系统将有效信息复制到新工作区内的指定区域。

如果 wParamFALSE,则应用程序不需要表示工作区的有效部分。

lParam

如果 wParamTRUE,则 lParam 指向 NCCALCSIZE _ 参数 结构,该结构包含应用程序可用于计算客户端矩形的新大小和位置的信息。

如果 wParamFALSE,则 lParam 指向 RECT 结构。 进入时,结构包含窗口的建议窗口矩形。 退出时,结构应包含相应窗口工作区的屏幕坐标。

返回值

类型: LRESULT

如果 wParam 参数为 FALSE,则应用程序应返回零。

如果 wParamTRUE,则应用程序应返回零或以下值的组合。

如果 wParamTRUE 且应用程序返回零,则保留旧的工作区,并与新工作区的左上角对齐。

返回代码/值 说明
Fem-d8-wvr _ALIGNTOP
0x0010
指定要保留窗口的工作区,并将其与窗口新位置的顶部对齐。 例如,若要将工作区与左上角对齐,则返回 FEM-D8-WVR _ ALIGNTOP 和 fem-d8-wvr _ ALIGNLEFT 值。
Fem-d8-wvr _ALIGNRIGHT
0x0080
指定要保留窗口的工作区,并将其与窗口新位置的右侧对齐。 例如,若要将工作区与右下角对齐,则返回 Fem-d8-wvr _ ALIGNRIGHT 和 fem-d8-wvr _ ALIGNBOTTOM 值。
Fem-d8-wvr _ALIGNLEFT
0x0020
指定要保留窗口的工作区,并将其与窗口新位置的左侧对齐。 例如,若要将工作区与左下角对齐,则返回 Fem-d8-wvr _ ALIGNLEFTfem-d8-wvr _ ALIGNBOTTOM 值。
Fem-d8-wvr _ALIGNBOTTOM
0x0040
指定要保留窗口的工作区,并与窗口的新位置的底部对齐。 例如,若要将工作区与左上角对齐,则返回 FEM-D8-WVR _ ALIGNTOP 和 fem-d8-wvr _ ALIGNLEFT 值。
Fem-d8-wvr _HREDRAW
0x0100
与其他任何值( Fem-d8-wvr _ VALIDRECTS 除外)结合使用时,如果客户端矩形水平变化大小,则会完全重新绘制该窗口。 此值类似于 CS _ HREDRAW 类样式
Fem-d8-wvr _VREDRAW
0x0200
与其他任何值( Fem-d8-wvr _ VALIDRECTS 除外)结合使用时,如果客户端矩形垂直变化大小,则会完全重新绘制该窗口。 此值类似于 CS _ VREDRAW 类样式
Fem-d8-wvr _重绘
0x0300
此值将导致重绘整个窗口。 它是 Fem-d8-wvr _ HREDRAWfem-d8-wvr _ VREDRAW 值的组合。
Fem-d8-wvr _VALIDRECTS
0x0400
此值指示,当从 WM _ NCCALCSIZE返回时, [ ] NCCALCSIZE 参数结构的 rgrc 1 和 rgrc [ 2 成员指定的矩形 ] 分别包含有效的目标和源区域矩形。 _ 系统将这些矩形组合起来以计算要保留的窗口区域。 系统复制源矩形内的窗口图像的任何部分,并将该图像剪切到目标矩形。 两个矩形都处于父相对坐标或屏幕相对坐标中。 此标志不能与任何其他标志组合。
使用此返回值,应用程序可以实现更复杂的客户端区域保存策略,如居中或保留一部分工作区。

备注

可以重绘窗口,具体取决于是否指定了 cs _ HREDRAW 或 cs _ VREDRAW 类样式。 这是 DefWindowProc 函数的默认的、后向兼容处理 (除了前面的表中所述的常见客户端矩形计算之外) 。

wParamTRUE 时,只返回0而不处理 NCCALCSIZE _ 参数 矩形将导致工作区调整到窗口的大小,包括窗口框架。 这将从窗口中删除窗口框架和标题项,仅保留显示的工作区。

从 Windows Vista 开始,通过仅在 wParamTRUE 时返回0来删除标准帧不会影响使用 DwmExtendFrameIntoClientArea函数扩展到客户端区域的帧。 仅删除标准帧。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
winuser.h (包括 Windows .h)

另请参阅

引用

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE _ 参数

概念性

Windows

其他资源

RECT