消息映射宏

时间:2010-08-10 06:22:44

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

您何时使用ON_COMMAND以及何时使用ON_MESSAGE。它们之间有什么区别。

1 个答案:

答案 0 :(得分:4)

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