WM_SYSCOMMAND訊息
當使用者從 [ 視窗 ] 功能表選擇命令時,視窗會收到此訊息, (先前稱為系統或控制項功能表) 或當使用者選擇最大化按鈕、最小化按鈕、還原按鈕或關閉按鈕時。
#define WM_SYSCOMMAND 0x0112
範例
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
GitHub 上的 Windows 傳統範例 。
參數
-
wParam
-
所要求的系統命令類型。 此參數可以是下列其中一個值。
值 意義 - SC_CLOSE
- 0xF060
關閉視窗。 - SC_CONTEXTHELP
- 0xF180
將游標變更為具有指標的問號。 如果使用者接著按一下對話方塊中的控制項,控制項就會收到 WM_HELP 訊息。 - SC_DEFAULT
- 0xF160
選取預設專案;使用者按兩下視窗功能表。 - SC_HOTKEY
- 0xF150
啟動與應用程式指定熱鍵相關聯的視窗。 lParam參數會識別要啟動的視窗。 - SC_HSCROLL
- 0xF080
水準捲動。 - SCF_ISSECURE
- 0x00000001
指出螢幕保護裝置是否安全。 - SC_KEYMENU
- 0xF100
擷取視窗功能表做為擊鍵的結果。 如需詳細資訊,請參閱<備註>一節。 - SC_MAXIMIZE
- 0xF030
最大化視窗。 - SC_MINIMIZE
- 0xF020
將視窗最小化。 - SC_MONITORPOWER
- 0xF170
設定顯示的狀態。 此命令支援具有省電功能的裝置,例如電池式個人電腦。
lParam參數可以有下列值:- -1 (顯示器開啟電源)
- 1 (顯示器即將進入低電源)
- 2 (顯示器正在關閉)
- SC_MOUSEMENU
- 0xF090
擷取視窗功能表,因為按一下滑鼠。 - SC_MOVE
- 0xF010
移動視窗。 - SC_NEXTWINDOW
- 0xF040
移至下一個視窗。 - SC_PREVWINDOW
- 0xF050
移至上一個視窗。 - SC_RESTORE
- 0xF120
將視窗還原至其正常位置和大小。 - SC_SCREENSAVE
- 0xF140
執行System.ini檔案之 [開機] 區段中指定的螢幕保護裝置應用程式。 - SC_SIZE
- 0xF000
調整視窗的大小。 - SC_TASKLIST
- 0xF130
啟動 [ 開始] 功能表。 - SC_VSCROLL
- 0xF070
垂直捲動。 -
lParam
-
低序單字會以螢幕座標指定游標的水準位置,如果使用滑鼠選擇視窗功能表命令。 否則,不會使用此參數。
高序單字會指定滑鼠選擇視窗功能表命令時,游標在螢幕座標中的垂直位置。 如果使用系統加速器選擇命令,則此參數為 1,如果使用助憶鍵則為零。
傳回值
如果應用程式處理此訊息,應用程式應該會傳回零。
備註
若要取得螢幕座標中的位置座標,請使用下列程式碼:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
DefWindowProc函式會執行上表所指定之預先定義動作的視窗功能表要求。
在 WM_SYSCOMMAND 訊息中,系統會在內部使用 wParam 參數的四個低序位。 若要在測試 wParam的值時取得正確的結果,應用程式必須使用位 AND 運算子,將值0xFFF0與 wParam 值結合。
您可以使用GetSystemMenu、AppendMenu、InsertMenu、ModifyMenu、InsertMenu、InsertMenuItem和SetMenuItemInfo 函式來修改視窗功能表中的功能表項目。 修改視窗功能表的應用程式必須處理 WM_SYSCOMMAND 訊息。
應用程式可以隨時執行任何系統命令,方法是將 WM_SYSCOMMAND 訊息傳遞至 DefWindowProc。 應用程式未處理的任何 WM_SYSCOMMAND 訊息都必須傳遞至 DefWindowProc。 應用程式新增的任何命令值都必須由應用程式處理,且無法傳遞至 DefWindowProc。
如果原則啟用密碼保護,無論應用程式對 SC_SCREENSAVE 通知執行什麼動作,都會啟動畫面保護,即使無法將它傳遞至 DefWindowProc也一樣。
定義為從視窗功能表選擇專案的快速鍵會轉譯成 WM_SYSCOMMAND 訊息;所有其他快速鍵按鍵都會轉譯成 WM_COMMAND 訊息。
如果 wParam是SC_KEYMENU, lParam 會包含與 ALT 鍵搭配使用的按鍵字元碼,以顯示快顯功能表。 例如,按 ALT+F 顯示 [檔案] 快顯會導致wParam等於SC_KEYMENU且lParam等於 'f' 的WM_SYSCOMMAND。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標頭 |
|