我用vc6的生成向导生成了一个不使用document/view结构的运用程序。
仔细看了一下他的结构,发现了一个函数如下(摘自mfc源代码):
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// let the view have first crack at the command
if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
{
return TRUE;
}
// otherwise, do default handling
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
开始的时候,我对这段代码很不理解,因为OnCmdMsg函数是处理WM_COMMAND消息的。参照CFrameWnd::OnCmdMsg,CView::OnCmdMsg,CCmdTarget::OnCmdMsg,CDocument::OnCmdMsg的说明。似乎整个WM_COMMAND消息的流动路线已经被定型了,如下:
(图片摘自vckbase.com)
CFrameWnd::OnCmdMsg函数的部分代码如下:
BOOL CFrameWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo)