WM_SIZE 消息
在窗口大小发生更改后发送到窗口。
窗口通过其 WindowProc 函数接收此消息。
#define WM_SIZE 0x0005
参数
-
wParam
-
请求的大小调整类型。 此参数的取值可为下列值之一。
值 含义 - SIZE_MAXHIDE
- 4
当其他一些窗口最大化时,消息将发送到所有弹出窗口。 - SIZE_MAXIMIZED
- 2
窗口已最大化。 - SIZE_MAXSHOW
- 3
当其他一些窗口还原到其之前的大小时,消息将发送到所有弹出窗口。 - SIZE_MINIMIZED
- 1
窗口已最小化。 - SIZE_RESTORED
- 0
窗口已调整大小,但 SIZE_MINIMIZED 和 SIZE_MAXIMIZED 值都不适用。 -
lParam
-
lParam 的低序字指定客户端区域的新宽度。
lParam 的高序字指定客户端区域的新高度。
返回值
类型:LRESULT
如果应用程序处理此消息,它应返回零。
示例
/******************************************************************
* *
* SimpleText::OnResize *
* *
* If the application receives a WM_SIZE message, this method *
* resize the render target appropriately. *
* *
******************************************************************/
void SimpleText::OnResize(UINT width, UINT height)
{
if (pRT_)
{
D2D1_SIZE_U size;
size.width = width;
size.height = height;
pRT_->Resize(size);
}
}
LRESULT CALLBACK SimpleText::WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
SimpleText *pSimpleText = reinterpret_cast<SimpleText *>(
::GetWindowLongPtr(hwnd, GWLP_USERDATA));
if (pSimpleText)
{
switch(message)
{
case WM_SIZE:
{
UINT width = LOWORD(lParam);
UINT height = HIWORD(lParam);
pSimpleText->OnResize(width, height);
}
return 0;
// ...
GitHub 上的 Windows 经典示例中的例子。
备注
如果由于 WM_SIZE 消息而为子窗口调用 SetScrollPos 或 MoveWindow 函数,则 bRedraw 或 bRepaint 参数应为非零,以使窗口重新绘制。
尽管窗口的宽度和高度是 32 位值,但 lParam 参数仅包含每个窗口的低序 16 位。
DefWindowProc 函数在处理 WM_WINDOWPOSCHANGED 消息时会发送 WM_SIZE 和 WM_MOVE 消息。 如果应用程序在不调用 DefWindowProc 的情况下处理 WM_WINDOWPOSCHANGED 消息,则不会发送 WM_SIZE 和 WM_MOVE 消息。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
另请参阅
-
引用
-
Conceptual
-
其他资源