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 [僅限傳統型應用程式] |
頁首 |
|
-
參考
-
概念
-
其他資源