在gui app中有ON_MESSAGE(id,handler)和hanler的LRESULT CMainFrame::handler(WPARAM wParam, LPARAM lParam)
声明。
好吧,visial studio不想在ON_COMMAND()中获得这样的处理程序。如何在ON_MESSAGE和ON_COMMAND中使用相同的hanler?
提前谢谢。
答案 0 :(得分:1)
正如您所注意到的那样,处理程序需要不同的声明来为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
}