WM_NCCALCSIZE訊息

必須計算視窗工作區的大小和位置時傳送。 藉由處理此訊息,應用程式可以在視窗的大小或位置變更時控制視窗工作區的內容。

視窗會透過其 WindowProc 函式接收此訊息。

#define WM_NCCALCSIZE                   0x0083

參數

wParam

如果 wParamTRUE,它會指定應用程式應該指出用戶端電腦的哪個部分包含有效的資訊。 系統會將有效資訊複製到新工作區內的指定區域。

如果 wParamFALSE,則應用程式不需要指出工作區的有效部分。

lParam

如果 wParamTRUElParam 會指向包含應用程式可用來計算用戶端矩形新大小和位置資訊的 NCCALCSIZE_PARAMS 結構。

如果 wParamFALSElParam 會指向 RECT 結構。 在專案上,結構包含視窗的建議視窗矩形。 結束時,結構應該包含對應視窗工作區的螢幕座標。

傳回值

類型: LRESULT

如果 wParam 參數為 FALSE,應用程式應該會傳回零。

如果 wParamTRUE,應用程式應該會傳回零或下列值的組合。

如果 wParamTRUE 且應用程式傳回零,則會保留舊的工作區,並對齊新工作區的左上角。

傳回碼/值 描述
WVR_ALIGNTOP
0x0010
指定視窗的工作區要保留並對齊視窗的新位置頂端。 例如,若要將工作區對齊左上角,請傳回WVR_ALIGNTOP和 WVR_ALIGNLEFT 值。
WVR_ALIGNRIGHT
0x0080
指定視窗的工作區要保留並對齊視窗新位置的右側。 例如,若要將工作區對齊右下角,請傳回 WVR_ALIGNRIGHT 和WVR_ALIGNBOTTOM值。
WVR_ALIGNLEFT
0x0020
指定視窗的工作區是要保留並對齊視窗新位置的左邊。 例如,若要將工作區對齊左下角,請傳回 WVR_ALIGNLEFTWVR_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_HREDRAWWVR_VREDRAW 值的組合。
WVR_VALIDRECTS
0x0400
這個值表示,從 WM_NCCALCSIZE傳回時, rgrc[1] 和 rgrc[2] NCCALCSIZE_PARAMS 結構的成員所指定的矩形分別包含有效的目的地和來源區域矩形。 系統會結合這些矩形,以計算要保留的視窗區域。 系統會複製來源矩形內視窗影像的任何部分,並將影像裁剪至目的地矩形。 這兩個矩形都位於父相對或螢幕相對座標中。 此旗標無法與任何其他旗標結合。
此傳回值可讓應用程式實作更詳細的用戶端應用程式保留原則,例如置中或保留工作區的子集。

 

備註

視指定 CS_HREDRAW 或CS_VREDRAW類別樣式而定,視窗可能會重新繪製。 除了上述表格中所述的一般用戶端矩形計算之外, DefWindowProc 函式 (此訊息的預設回溯相容處理) 。

當 wParamTRUE時,只要傳回 0 而不處理NCCALCSIZE_PARAMS矩形,就會讓工作區調整為視窗的大小,包括視窗框架。 這會從視窗移除視窗框架並標題專案,只顯示工作區。

從 Windows Vista 開始,只要在 wParamTRUE 時傳回 0 來移除標準框架,不會影響使用 DwmExtendFrameIntoClientArea 函式延伸至工作區的畫面。 只會移除標準框架。

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Winuser.h (包含 Windows.h)

另請參閱

參考

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE_PARAMS

概念

Windows

其他資源

矩形