MFC调用命令处理程序以响应发生在应用程序中的事件。命令发送的优先级是:
活动的视图->框架窗口->文档->应用程序->默认窗口过程(DefWindowsProc)
如果文档数据发生了变化,则所有的视都必须被通知到,以便它们能够对所显示的数据进行相应的更新。Cdocument::UpdateAllViews函数即可完成此功能。当该函数被调用时,派生视类的CView::OnUpdate函数被触发。通常OnUpdate函数要对文档进行访问,读取文档数据,然后再对视的数据成员或控制进行更新,以便反映出文档的变化。另外,还可以利用OnUpdate函数使视的部分客户区无效,以便触发Cview::OnDraw函数,利用文档数据来重新对窗口进行绘制。
函数CDocTemplate::CreateNewFrame调用MDI子窗口类(CMDIChildWnd)的构造函数,生成MDI子窗口对象。接着调用CMDIChildWnd::PreCreateWindow。然后,生成一个CCreateContext对象,(CcreateContext是MFC框架所使用的一种结构,它将构成文档和视的组件联系起来。后文将详细介绍之。)并将该对象值传给CMDIChildWnd::OnCreateClient函数。MFC调用此函数,用CCreateContext对象提供的信息创建一个或多个CView对象。此时,各视的构造函数被依次调用。
(b)、否则,表明要打开一个已存在的文档:调用CDocument::OnOpenDocument打开指定的文件;执行DeleteContext,保证文档为空;调用CObject::Serialize读入该文件的内容。(程序员可在此进行文件的读入操作。当然,也可以在CDocument::OnOpenDocument中读入文件)。然后置文档为清洁;最后,调用CDocTemplate::SetPathName,并把文件名加入到最近文件列表中。
由于由AppWizard生成的应用程序会缺省调用CWinApp::OnFileNew,所以当程序开始执行时,会在主框架上显示一个新的空窗口。如果想去掉这个空窗口,只须重载CWinApp::OnFileNew函数,不许要任何代 码,即可。