【问题标题】:Message map macros消息映射宏
【发布时间】:2010-08-10 06:22:43
【问题描述】:

您什么时候使用 ON_COMMAND,我们什么时候使用 ON_MESSAGE。它们之间有什么区别。

【问题讨论】:

    标签: c++ visual-c++ mfc


    【解决方案1】:

    ON_COMMAND 专门用于处理命令消息(即WM_COMMAND),例如单击按钮/菜单项/工具栏按钮。

    ON_MESSAGE 更通用,可用于任何 Windows 消息。它通常用于处理频率较低但未提供特定消息映射宏的消息。您也可以使用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

    【讨论】:

    • 您能否举个例子说明“您也可以使用 ON_MESSAGE 处理 ON_COMMAND 消息,但您必须自己提取消息信息”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    相关资源
    最近更新 更多