WM_COMMAND
WM_COMMAND
WM_COMMAND,程序代碼,在窗口菜單程序中使用。
WM_COMMAND:
窗口菜單:
LOWORD(wParam): 菜單id
HIWORD(wParam): 0
lParam: 0
如果這個消息是由子窗口控制項產生,如button產生則:
LOWORD(wParam): 控制項ID
HIWORD(wParam): 通知碼
lParam: 子窗口句柄。
對於菜單 和加速鍵來說,lParam為0,只有控制項此項才非0。命令ID也就是資源腳本中定義的菜單項的命令ID或者加速鍵的命令ID;菜單的通知碼為0;加速鍵 的通知碼為1。
通過參數,可以區分這個消息的來源是來自於控制項,快捷鍵還是菜單。
WM_COMMAND (上文翻譯)
TheWM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
當用戶從菜單選中一個命令項目、當一個控制項發送通知消息給去父窗口或者按下一個快捷鍵將發送WM_COMMAND 消息
A window receives this message through itsWindowProc function.
窗口通過WindowProc函數收到此消息。
LRESULT CALLBACK WindowProc(
HWNDhwnd // handle to window
UINTuMsg // WM_COMMAND
WPARAMwParam // notification code and identifier
LPARAMlParam // handle to control (HWND)
);
LRESULT CALLBACK WindowProc(
HWNDhwnd // 窗口句柄
UINTuMsg // WM_COMMAND
WPARAMwParam // notification code and identifier 消息
LPARAMlParam // handle to control (HWND) 控制項id
);
ParameterswParam The high-order word specifies the notification code if the message is from a control.如果信息是從控制項傳來,參數wParam高位字指定通知代碼。
If the message is from an accelerator, this value is 1.如果信息是從一個加速器傳來,這個值是1 。
If the message is from a menu, this value is zero.
如果信息是從菜單中傳來,這個值是零。 The low-order word specifies the identifier of the menu item, control, or accelerator.低位字的標識符指定的菜單項,控制項或加速器。
lParam Handle to the control sending the message if the message is from a control.
如果信息是從控制項傳來,則 lParam是控制項的句柄。
Otherwise, this parameter is NULL.否則,這個參數是無效的。
Return ValuesIf an application processes this message, it should return zero.
返回ValuesIf應用程序這個訊息,它應返回零。
RemarksAccelerator keystrokes that select items from the window menu are translated intoWM_SYSCOMMAND messages. RemarksAccelerator擊鍵的選擇項目從窗口菜單化為WM_SYSCOMMAND消息。
If an accelerator keystroke occurs that corresponds to a menu item when the window that owns the menu is minimized, noWM_COMMAND message is sent.如果出現一個加速器按鍵對應的菜單項時的窗口,擁有菜單最小,沒有WM_COMMAND發送郵件。 However, if an accelerator keystroke occurs that does not match any of the items in the window's menu or in the window menu, aWM_COMMAND message is sent, even if the window is minimized.但是,如果出現一個加速器按鍵不匹配的任何物品在窗口的菜單或窗口菜單,一個WM_COMMAND消息發送,即使是最小化的窗口。
If an application enables a menu separator, the system sends aWM_COMMAND message with the low-word of thewParam parameter set to zero when the user selects the separator.如果應用程序使菜單分離,系統發出了一個WM_COMMAND消息的低字的wParam參數設置為0時,用戶選擇的分隔符。
Windows 98, Windows 2000: If a menu is defined with aMENUINFO.dwStyle value of MNS_NOTIFYBYPOS,WM_MENUCOMMAND is sent instead ofWM_COMMAND .Windows 98中, Windows 2000中:如果一個菜單的定義與MENUINFO.dwStyle價值MNS_NOTIFYBYPOS ,WM_MENUCOMMAND發送不是WM_COMMAND 。
RequirementsWindows NT/2000: Requires Windows NT 3.1 or later.要求視窗 NT/2000:需要Windows NT 3.1或更高版本。
Windows 95/98: Requires Windows 95 or later.視窗95/98 :需要Windows 95或更新版本。
See AlsoMenus Overview, Menu Messages,HIWORD ,LOWORD ,MENUINFO ,WM_MENUCOMMAND ,WM_SYSCOMMAND查看AlsoMenus概況,菜單消息,HIWORD ,LOWORD ,MENUINFO ,WM_MENUCOMMAND ,WM_SYSCOMMAND
WM_COMMAND是X11核心協議保留的預定義atom名稱之一。X11核心協議不規定具體語義。