當使用者從功能表叫用命令專案時、控制項將通知訊息傳送至其父視窗時,或轉譯快速鍵按鍵時傳送。
#define WM_COMMAND 0x0111
參數
-
w參數
-
如需此參數的描述,請參閱 備註。
-
l參數
-
如需此參數的描述,請參閱 備註。
返回值
如果應用程式處理此訊息,它應該傳回零。
Example
BOOL AboutDlg (
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
BOOL bRet = FALSE;
switch (message)
{
case WM_INITDIALOG:
bRet = TRUE;
break;
case WM_COMMAND:
if (wParam == IDOK ||
wParam == IDCANCEL)
{
EndDialog(hDlg, TRUE);
bRet = TRUE;
}
break;
}
return bRet;
}
範例取自 GitHub 上的 Windows 傳統範例 。
備註
此處摘要說明 wParam 和 lParam 參數的使用。
| 訊息來源 | wParam(高字) | wParam(低字) | l參數 |
|---|---|---|---|
| 菜單 | 0 | 功能表識別碼 (IDM_*) | 0 |
| 加速器 | 1 | 加速器識別碼 (IDM_*) | 0 |
| 控制 | 控制項定義的通知程式碼 | 控制項識別碼 | 控制項視窗的控點 |
選單
在大部分情況下,這是使用者在功能表中叫用命令時要接聽的訊息。 不過,如果功能表定義為 MENUINFO.dwStyle 值 MNS_NOTIFYBYPOS,則會傳送 WM_MENUCOMMAND ,而不是 WM_COMMAND。
如果應用程式啟用功能表分隔符號,系統會在使用者選取分隔符號時傳送 WM_COMMAND 訊息,其中 wParam 參數的低字組設定為零。
加速器
從視窗功能表中選取項目的快速鍵擊鍵會轉譯成 WM_SYSCOMMAND 訊息。
如果在最小化擁有功能表的視窗時,發生對應至功能表項目的快速鍵擊鍵,則不會傳送任何 WM_COMMAND 訊息。 不過,如果發生的快速鍵敲擊不符合視窗功能表或視窗功能表中的任何專案,則會傳送 WM_COMMAND 訊息,即使視窗已最小化也一樣。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 |
Windows 2000 Professional [僅限傳統型應用程式] |
| 最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
| Header |
|