2010-08-10 90 views
2

當你ON_COMMAND使用,做當我們使用ON_MESSAGE。它們之間有什麼區別。消息映射宏

回答

4

ON_COMMAND專門用於處理命令消息(即WM_COMMAND),如點擊按鈕/菜單項/工具欄按鈕。

ON_MESSAGE是更通用的,可以被用於任何的窗口消息。它通常用於較不頻繁處理的消息,而未提供特定的消息映射宏。您可以使用ON_MESSAGE處理ON_COMMAND消息以及但是你必須提取消息的信息(即命令ID)自己。

實施例:

在這裏看到:

在消息映射:

ON_MESSAGE(WM_COMMAND, OnMyCommand) 

處理程序:

LRESULT CMyWnd::OnMyCommand(WPARAM wParam, LPARAM lParam) 
{ 
    // ... Handle message here 
    int commandId = LOWORD(wParam); 

    switch(commandId){ 
    case ID_HELLOCOMMAND: 
     MessageBox(0, "Hello there!", "ID_HELLO_COMMAND", MB_OK); 
     break; 
    // ... other commands here 
    } 

    return 0L; 
} 

免責聲明:由於MFC的消息泵機制,你可能做的比什麼上面顯示多一點。最好的男人問:Jeff Prosise

+0

你能舉一個例子這種「你可以使用ON_MESSAGE處理ON_COMMAND消息以及但是你必須提取消息的信息自己」的解釋。 – ckv 2010-08-10 06:31:43

+0

@ckv:我添加了一個例子。 – 2010-08-26 15:44:30