WM_NCCALCSIZE 消息

WM_NCCALCSIZE message

Saturday, February 22, 2020

9:16 PM

 

https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-nccalcsize

 

当必须计算窗口客户区域的大小和位置时,发送该消息。当窗口的位置和大小改变时,通过处理该消息,

应用程序可以控制窗口客户区域的内容。

 

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

#define WM_NCCALCSIZE                   0x0083

 

参数

wParam

若 wParam 为 TRUE,则规定应用程序应指明客户区域的哪部分包含有效信息。

系统拷贝该有效信息到新客户区域的指定区域。
若 wParam 为 FALSE,则应用程序无需指定客户区域的有效部分。

lParam

若 wParam 为 TRUE, lParam 指向 NCCALCSIZE_PARAMS 结构体,应用程序可以使用该结构体计算

客户区域矩形的新位置和大小。

若 wParam 为 FALSE,lParam 指向 RECT 结构体。在进入时,该结构体包含为该窗口的建议窗口矩形

在退出时,该结构体应该包含相应的窗口客户区域的屏幕坐标

 

返回值

Type: LRESULT

若参数 wParam 是 FALSE,应用程序应该返回0.

若参数 wParam 是 TRUE ,应用程序应该返回0或以下值的组合。

若参数 wParam 是 TRUE 并且应用程序返回0,旧客户区域被保留将于新客户区域的左上角对齐。

 

返回代码/值

描述

WVR_ALIGNTOP

0x0010

指定要保留的窗口客户区域并与窗口新位置的顶部对齐。

例如,要将客户区域与左上角对齐,返回值 WVR_ALIGNTOP

WVR_ALIGNLEFT

WVR_ALIGNRIGHT

0x0080

指定要保留的窗口客户区域并与窗口新位置的右端对齐。

例如,要将客户区域与右下角对齐,返回值 WVR_ALIGNRIGHT

WVR_ALIGNBOTTOM

WVR_ALIGNLEFT

0x0020

指定要保留的窗口客户区域与窗口新位置的左端对齐。

例如,为将客户区域与左下角对齐,返回值 WVR_ALIGNLEFT

WVR_ALIGNBOTTOM

WVR_ALIGNBOTTOM

0x0040

指定要保留的窗口客户区域与窗口新位置的底端对齐。

例如,为将客户区域与左上角对齐,返回值 WVR_ALIGNTOP

WVR_ALIGNLEFT

WVR_HREDRAW

0x0100

若窗口客户区域矩形水平改变大小,该值与其他值组合使用,除了 WVR_VALIDRECTS ,

会引起窗口的完全重绘。该值与窗口类型值 CS_HREDRAW 相似。

WVR_VREDRAW

0x0200

若窗口客户区域矩形垂直改变大小,将该值用于除 WVR_VALIDRECTS 外其他值使用,

会引起窗口的完全重绘。该值与 CS_VREDRAW 相似。

WVR_REDRAW

0x0300

该值引起整个窗口重绘。是 WVR_HREDRAW WVR_VREDRAW 的组合。

WVR_VALIDRECTS

0x0400

该值表明,当从 WM_NCCALCSIZE 返回时,结构体 NCCALCSIZE_PARAMS 成员 rgrc[1]
和 rgrc[2] 分别表示包含有效的目标和源区域矩形。系统将这些矩形组合起来以计算

要保留的窗口区域。系统拷贝源矩形内的窗口图像的任何部分并裁剪该图像到目标矩形。

两矩形都相对于父坐标或屏幕坐标中。该标志值不能与任何其他值组合。

此返回值允许应用程序实施更复杂的客户区域保留策略,例如居中或保留客户区域的子集。

 

Remarks

 

窗口可重绘,依赖于是否指定窗口类型值 CS_HREDRAW 和 CS_VREDRAW 。函数 DefWindowProc 对该消息是默认的,

向后兼容的处理(除了上表中描述的常规客户区域矩形的计算外)。

 

wParam 为 TRUE,仅返回0并且没有处理 NCCALCSIZE_PARAMS 矩形会引起将客户区域调整为包含

窗口边框( Window Frame )在内的窗口大小。该处理会移除窗口中的窗口框架(Window Frame)和标题项(Caption items),

仅保留要显示的窗口客户区域

 

Windows Vista 开始,当 wParam 为 TRUE 时仅返回0可移除标准窗口框架(Window Frame),但不会影响使用

 DwmExtendFrameIntoClientArea 函数将 标准 Frame 扩展到客户区域中的 Frame。

仅仅移除标准窗口框架 ( Standard Frame)。

 

Requirements

最低限度支持客户端

Windows 2000 Professional ( desktop apps only )

最低限度支持服务器

Windows 2000 Server ( desktop apps only )

Header

Winuser.h ( include Windowsx.h )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值