WM_NCCALCSIZE訊息
必須計算視窗工作區的大小和位置時傳送。 藉由處理此訊息,應用程式可以在視窗的大小或位置變更時控制視窗工作區的內容。
視窗會透過其 WindowProc 函式接收此訊息。
#define WM_NCCALCSIZE 0x0083
參數
-
wParam
-
如果 wParam 為 TRUE,它會指定應用程式應該指出用戶端電腦的哪個部分包含有效的資訊。 系統會將有效資訊複製到新工作區內的指定區域。
如果 wParam 為 FALSE,則應用程式不需要指出工作區的有效部分。
-
lParam
-
如果 wParam 為 TRUE, lParam 會指向包含應用程式可用來計算用戶端矩形新大小和位置資訊的 NCCALCSIZE_PARAMS 結構。
如果 wParam 為 FALSE, lParam 會指向 RECT 結構。 在專案上,結構包含視窗的建議視窗矩形。 結束時,結構應該包含對應視窗工作區的螢幕座標。
傳回值
類型: LRESULT
如果 wParam 參數為 FALSE,應用程式應該會傳回零。
如果 wParam 為 TRUE,應用程式應該會傳回零或下列值的組合。
如果 wParam 為 TRUE 且應用程式傳回零,則會保留舊的工作區,並對齊新工作區的左上角。
傳回碼/值 | 描述 |
---|---|
|
指定視窗的工作區要保留並對齊視窗的新位置頂端。 例如,若要將工作區對齊左上角,請傳回WVR_ALIGNTOP和 WVR_ALIGNLEFT 值。 |
|
指定視窗的工作區要保留並對齊視窗新位置的右側。 例如,若要將工作區對齊右下角,請傳回 WVR_ALIGNRIGHT 和WVR_ALIGNBOTTOM值。 |
|
指定視窗的工作區是要保留並對齊視窗新位置的左邊。 例如,若要將工作區對齊左下角,請傳回 WVR_ALIGNLEFT 和 WVR_ALIGNBOTTOM 值。 |
|
指定要保留視窗的工作區,並對齊視窗新位置的底部。 例如,若要將工作區對齊左上角,請傳回 WVR_ALIGNTOP和WVR_ALIGNLEFT 值。 |
|
與任何其他值搭配使用,但 WVR_VALIDRECTS除外,如果用戶端矩形水準變更大小,就會完全重新繪製視窗。 這個值類似于 CS_HREDRAW 類別樣式 |
|
與任何其他值搭配使用,但 WVR_VALIDRECTS除外,如果用戶端矩形垂直變更大小,就會完全重新繪製視窗。 這個值類似于 CS_VREDRAW 類別樣式 |
|
此值會使整個視窗重新繪製。 它是 WVR_HREDRAW 和 WVR_VREDRAW 值的組合。 |
|
這個值表示,從 WM_NCCALCSIZE傳回時, rgrc[1] 和 rgrc[2] NCCALCSIZE_PARAMS 結構的成員所指定的矩形分別包含有效的目的地和來源區域矩形。 系統會結合這些矩形,以計算要保留的視窗區域。 系統會複製來源矩形內視窗影像的任何部分,並將影像裁剪至目的地矩形。 這兩個矩形都位於父相對或螢幕相對座標中。 此旗標無法與任何其他旗標結合。 此傳回值可讓應用程式實作更詳細的用戶端應用程式保留原則,例如置中或保留工作區的子集。 |
備註
視指定 CS_HREDRAW 或CS_VREDRAW類別樣式而定,視窗可能會重新繪製。 除了上述表格中所述的一般用戶端矩形計算之外, DefWindowProc 函式 (此訊息的預設回溯相容處理) 。
當 wParam為TRUE時,只要傳回 0 而不處理NCCALCSIZE_PARAMS矩形,就會讓工作區調整為視窗的大小,包括視窗框架。 這會從視窗移除視窗框架並標題專案,只顯示工作區。
從 Windows Vista 開始,只要在 wParam 為 TRUE 時傳回 0 來移除標準框架,不會影響使用 DwmExtendFrameIntoClientArea 函式延伸至工作區的畫面。 只會移除標準框架。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標頭 |
|
另請參閱
-
參考
-
概念
-
其他資源