WM_SIZE

发送时间:当窗口大小改变时.
详细时间:1.当窗口大小改变时,如最大化,最小化,用鼠标拉伸窗口.
2.当窗口刚被创建时


参数说明:
wParam:
Specifies the type of resizing requested.
通常用来向别的窗口发送消息时,需要指定的附加信息
ValueMeaning
SIZE_MAXHIDEMessage is sent to all pop-up windows when some other window is maximized.
SIZE_MAXSHOWMessage is sent to all pop-up windows when some other window has been restored to its former size.
SIZE_MINIMIZED The window has been minimized.
ValueMeaning
SIZE_RESTOREDThe window has been resized, but neither the SIZE_MINIMIZED nor SIZE_MAXIMIZED value applies.

lParam:
The low-order word of lParamspecifies the new width of the client area.
The high-order word of lParam specifies the new height of the client area.
note:
lParam和GetClientRect的功能一样,有时候WM_SIZE的效率要比使用GetClientRect高. 可以在程序中使用WM_SIZE来保存Client area的大小方便以后使用.

 

WM_SIZE后于WM_CREATE消息!!在窗口被创建时的顺序!
WM_SIZE附带的信息:

WM_SIZE 
fwSizeType 
= wParam;      // resizing flag 
nWidth = LOWORD(lParam);  // width of client area 
nHeight = HIWORD(lParam); // height of client area 

告诉我们Windows处理窗口大小变化后新窗口客户区的大小.
Message Cracker

void Cls_OnSize(HWND hwnd, UINT state, int cx, int cy)
{
  
//do ...
}

参数cx,cy是新窗口客户区的大小!宽度和高度


 

`WM_SIZE` 是 Windows 消息机制中的一个消息类型,用于通知窗口其大小已经改变。当用户调整窗口大小或程序通过代码更改窗口尺寸时,系统会向该窗口发送 `WM_SIZE` 消息。开发者可以捕获这个消息以执行与窗口大小变化相关的操作,例如重绘窗口内容、调整控件布局等。 ### 使用示例(C++ Windows API 示例): ```cpp LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_SIZE: { int width = LOWORD(lParam); // 获取窗口的新宽度 int height = HIWORD(lParam); // 获取窗口的新高度 // 可以在这里根据新的窗口大小进行相关操作 // 例如:调整控件大小、重绘图形等 return 0; // 返回0表示已处理该消息 } case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } } ``` ### 方法说明: - `WM_SIZE` 的 `wParam` 参数表示窗口大小变化的原因,可能的取值包括: - `SIZE_RESTORED`:窗口从最大化或最小化状态恢复。 - `SIZE_MINIMIZED`:窗口被最小化。 - `SIZE_MAXIMIZED`:窗口被最大化。 - `lParam` 的低位 (`LOWORD`) 表示窗口的新宽度,高位 (`HIWORD`) 表示窗口的新高度。 ### 注意事项: 1. 在处理 `WM_SIZE` 消息时,通常需要重新布局窗口中的控件或更新绘图区域。 2. 如果窗口有子控件,可能需要手动调整它们的位置和大小。 3. 在某些情况下,可能需要调用 `InvalidateRect` 来强制窗口重绘。 ### 相关函数: - `GetWindowRect`:获取窗口的屏幕坐标。 - `GetClientRect`:获取窗口的客户区大小。 - `MoveWindow`:移动或调整窗口大小。 - `SetWindowPos`:更灵活地设置窗口的位置和大小。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值