2010-08-10 60 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