代码之家  ›  专栏  ›  技术社区  ›  ckv

消息映射宏

  •  2
  • ckv  · 技术社区  · 14 年前

    你什么时候使用_命令,什么时候使用_消息。他们之间的区别是什么?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Agnel Kurian    14 年前

    ON_COMMAND 专门用于处理命令消息(即 WM_COMMAND )就像点击一个按钮/菜单项/工具栏按钮。

    ON_MESSAGE 更通用,可用于任何Windows消息。它通常用于未提供特定消息映射宏的处理频率较低的消息。你可以使用 ON消息 处理 Onl命令 消息也是如此,但您必须自己提取消息信息(即命令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