2014-10-29 38 views
0

在gui应用程序中有ON_MESSAGE(id,handler),其中包含处理器的LRESULT CMainFrame::handler(WPARAM wParam, LPARAM lParam)声明。
那么,visial studio不想在ON_COMMAND()中获得这样的处理函数。我能做些什么来在ON_MESSAGE和ON_COMMAND中使用同一个hanler? 在此先感谢。按钮和ON_MESSAGE

回答

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 
}