7.3 文档/视图结构的消息处理

2013-10-07 00:36:44 · 作者: · 浏览: 63

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】

回书目   上一节   下一节