windows_programming_notes.nbk: Home | Index | Next Page: WM_COMPACTING | Previous Page: WM_CLOSE
The WM_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 WPARAM wParam LPARAM lParam;
If an application processes this message, it should return zero.
Use of the wParam and lParam parameters are summarized here.
Message wParam wParam lParam Source (high word) (low word) ----------------------------------------------------------------------------------- Menu 0 Menu identifier (IDM_*) 0 Accelerator 1 Accelerator identifier (IDM_*) 0 Control Control-defined Control identifier Handle to the notification code control window
If an application enables a menu separator, the system sends a WM_COMMAND message with the low-word of the wParam parameter set to zero when the user selects the separator.
Windows 98/Me, Windows 2000/XP: If a menu is defined with a MENUINFO.dwStyle value of [MNS_NOTIFYBYPOS], WM_MENUCOMMAND is sent instead of WM_COMMAND.
Accelerator keystrokes that select items from the window menu are translated into WM_SYSCOMMAND messages.
If an accelerator keystroke occurs that corresponds to a menu item when the window that owns the menu is minimized, no WM_COMMAND message is sent. However, if an accelerator keystroke occurs that does not match any of the items in the window's menu or in the window menu, a WM_COMMAND message is sent, even if the window is minimized.
////////////////////////////////////////////////////////////////////////////////////// LRESULT CALLBACK on_command(HWND hwnd, int id, HWND hwnd_cntl, UINT notify_code) { if (notify_code == 0) { // its from the menu } else if (notify_code == 1) { // its from an accelerator } else { // its from a control } return 0; }
windows_programming_notes.nbk: Home | Index | Next Page: WM_COMPACTING | Previous Page: WM_CLOSE
Notebook exported on Monday, 7 July 2008, 18:56:50 PM Eastern Daylight Time