2014-10-29 61 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 
}