|
7.3 文档/视图结构的消息处理
教学录像:光盘\TM\lx\7\文档/视图结构的消息处理.exe
在文档/视图结构的应用程序中,当用户单击某个菜单项时,程序会先执行模板对象的OnCmdMsg方法,然后执行框架的OnCmdMsg方法。框架的OnCmdMsg方法代码如下:
BOOL CFrameWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { CPushRoutingFrame push(this); CView* pView = GetActiveView(); if (pView != NULL && pView->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; if (CWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; CWinApp* pApp = AfxGetApp(); if (pApp != NULL && pApp->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; return FALSE; } | 下面分析一下这段代码。在框架的OnCmdMsg方法中,首先调用视图对象的OnCmdMsg方法处理命令消息。在视图的命令消息中,会先搜索视图本身的消息映射表,如果没有发现处理函数,则调用文档对象的OnCmdMsg方法。如果文档也没有处理命令消息,会执行CWnd::OnCmdMsg语句,搜索框架本身的消息映射表。如果还没有搜索到命令消息的处理方法,会执行pApp->OnCmdMsg语句,调用应用程序的OnCmdMsg方法。
【责任编辑: 夏书 TEL:(010)68476606】
|