按钮和ON_MESSAGE

时间:2014-10-29 14:08:58

标签: c++ visual-studio button mfc

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

1 个答案:

答案 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
}