WM_COMMAND產生的條件:點擊菜單, 點擊加速鍵,點擊子窗口按鈕,點擊工具欄按鈕。這些時候都有command消息產生。
WM_COMMAND消息中有兩個參 數,wparam、lparam,定義如下:
wParam 高兩個字節 通知碼
wParam 低兩字節 命令ID
lParam 發送命令消息的子窗體句柄。
對於菜單 和加速鍵來說,lParam為0,只有控件此項才非0。命令ID也就是資源腳本中定義的菜單項的命令ID或者加速鍵的命令ID;菜單的通知碼為0;加速鍵 的通知碼為1。
對於Windows菜單中菜單項和加速鍵,點擊后,Windows會向所屬的窗體發送WM_SYSCOMMAND,而不是WM_COMMAND消息。注 意,WINDOWS菜單是系統菜單,也就是在標題欄點擊鼠標左鍵的時候彈出的菜單。我們可以捕獲WM_CREATE消息,加入自己的操 作:GetSysMenu獲取系統菜單句柄,然后對系統菜單進行操作,並且捕獲添加菜單項(根據菜單命令ID)ID對應的WM_SYSCOMMAND消息 進行處理。修改系統默認的菜單行為。
子窗體和父窗體:
子窗體被觸發時,向父窗體發送一個WM_COMMAND消息,父窗體的窗口函數處理這個消息,進行 相關的處理。lParam表示子窗口句柄,LOWORD(wParam)表示子窗口ID,HIWORD (wParam)表示通知碼(例如單擊,雙擊,SETFOCUS等)。