c++ - 消息映射宏

标签 c++ visual-c++ mfc

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

最佳答案

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

关于c++ - 消息映射宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446533/

相关文章:

c++ - 为什么 TRACE() 抛出 float 下溢异常?

C++ 在使用 cin 和变量时无法转换输入字符串

c++ - 使用 C# 或 C++ 程序在 Windows 中挂载隐藏分区

C++ - 调用 std::vector 的 .clear() 时发生访问冲突

C++ auto_ptr 和 shared_ptr 从 VC++10 到 VC++12 的变化

windows - mfc 应用程序中的 "binary was not built with debug information "警告含义?

c++ - 基于对话框的 MFC 应用程序的应用程序范围的周期性任务

c++ - 模板可变函数 : arbitrary number of classes with arbitrary number of constructor parameters

C++ 和 WINSOCK - 接收两个结构和两个消息

C++:MSC 不解析模板运算符(gcc 和 clang ok)