在 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/