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 [仅限桌面应用] |
标头 |
|
另请参阅
-
引用
-
概念性
-
其他资源