WM_SYSCOMMAND訊息

當使用者從 [ 視窗 ] 功能表選擇命令時,視窗會收到此訊息, (先前稱為系統或控制項功能表) 或當使用者選擇最大化按鈕、最小化按鈕、還原按鈕或關閉按鈕時。

#define WM_SYSCOMMAND                   0x0112

範例

 case WM_SYSCOMMAND:
        if (wParam == 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、InsertMenuModifyMenuInsertMenu、InsertMenuItemSetMenuItemInfo 函式來修改視窗功能表中的功能表項目。 修改視窗功能表的應用程式必須處理 WM_SYSCOMMAND 訊息。

應用程式可以隨時執行任何系統命令,方法是將 WM_SYSCOMMAND 訊息傳遞至 DefWindowProc。 應用程式未處理的任何 WM_SYSCOMMAND 訊息都必須傳遞至 DefWindowProc。 應用程式新增的任何命令值都必須由應用程式處理,且無法傳遞至 DefWindowProc

如果原則啟用密碼保護,無論應用程式對 SC_SCREENSAVE 通知執行什麼動作,都會啟動畫面保護,即使無法將它傳遞至 DefWindowProc也一樣。

定義為從視窗功能表選擇專案的快速鍵會轉譯成 WM_SYSCOMMAND 訊息;所有其他快速鍵按鍵都會轉譯成 WM_COMMAND 訊息。

如果 wParam是SC_KEYMENUlParam 會包含與 ALT 鍵搭配使用的按鍵字元碼,以顯示快顯功能表。 例如,按 ALT+F 顯示 [檔案] 快顯會導致wParam等於SC_KEYMENUlParam等於 'f' 的WM_SYSCOMMAND

規格需求

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

另請參閱

參考

AppendMenu

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

InsertMenu

ModifyMenu

WM_COMMAND

概念

鍵盤快速鍵