c++ - 按钮和 ON_MESSAGE

标签 c++ visual-studio button mfc

在 gui 应用程序中有 ON_MESSAGE(id, handler) 和 hanler 的 LRESULT CMainFrame::handler(WPARAM wParam, LPARAM lParam) 声明。
好吧,visial studio 不想在 ON_COMMAND() 中获得这样的处理程序。如何在 ON_MESSAGE 和 ON_COMMAND 中使用相同的处理程序? 提前致谢。

最佳答案

正如您注意到的那样,处理程序需要不同的声明才能为 ON_MESSAGE 和 ON_COMMAND 工作,因此您不能对 ON_COMMAND 和 ON_MESSAGE 使用相同的函数。 您必须为每个处理程序创建一个函数,然后您可以将您的代码封装到另一个从第一个处理程序调用的函数中。

喜欢:

BEGIN_MESSAGE_MAP(CMyClass, CMyParentClass)
    //{{AFX_MSG_MAP(CMyClass)
    ON_MESSAGE(ID_MY_MESSAGE_ID,OnMyMessage)
    ON_COMMAND(ID_MY_COMMAND_ID,OnMyCommand)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()
LRESULT CMyClass::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
   UNREFERENCED_PARAMETER(wParam);
   UNREFERENCED_PARAMETER(lParam);

   MyEncapsulatedCode();

   return 0;
}
void CMyClass::OnMyCommand()
{
   MyEncapsulatedCode();
}
void CMyClass::MyEncapsulatedCode()
{
    //do stuff
}

关于c++ - 按钮和 ON_MESSAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26632493/

相关文章:

c# - NHibernate 无法编译映射

grails - 如何根据情况显示和隐藏按钮?

C++ 模板元编程 : constexpr function

python - boost::python:如何覆盖静态属性?

c++ - 在#define 中使用引号

c++ - 更改 .cpp 文件导致 Visual Studio 2012 重新编译不相关的文件

visual-studio - 用于多个配置的 Devenv 构建命令

button - Corona SDK - "ShowOverlay"与 LetterBox 问题

javascript - 如何点击带有特定文本的按钮?

c++ - 如何将char转换为wchar_t *?