文档新建、打开及关闭的过程

时间:2022-12-01 10:02:21

应用程序类的InitInstance()函数在调用了AddDocTemplate()函数之后,会通过CWinApp::ProcessShellCommand间接调用
CWinApp的OnFileNew,并依次完成下列工作:
(1)构造文档对象,从磁盘中读取数据。
(2)构造主框架类CMainFrame类的对象,并创建该主框架窗口,但不显示。
(3)构造视图对象,并创建视图窗口,同样也不显示。
(4)通过MFC内部机制,建立主框架窗口、文档和视图对象之间的联系。
(5)调用CDocument::OnNewDocument()虚函数,并调用CDocument::DeleteContents()虚函数来清除文档对象的内容。
(6)调用CView::OnInitialUpdate()虚函数初始化视图类的数据成员。
(7)调用CFrameWnd::ActiveFrame()虚函数,显示带有菜单、工具栏、状态栏以及视图窗口的主框架窗口。

打开文档
在利用MFC应用程序向导创建应用程序时,MFC会自动将“文件”菜单中的“打开”命令映射到CWinApp类的OnFileOpen()成员函数。OnFileOpen()函数会完成下列操作:
(1)弹出通用文件“打开”对话框,供用户选择一个文档。
(2)文档指定后,调用文档对象的CDoucment::OnOpenDocument()虚函数。这个函数将打开文档,并调用DeleteContents()函数清除文档对象的内容,然后创建一个CArchive对象用于数据的读取,接着又自动调用Serialize()函数。
(3)调用视图对象的CView::OnInitialUpdate()虚函数初始化视图类的数据成员。

保存文档
在利用MFC应用程序向导创建应用程序时,它会自动将“文件”菜单中的“保存”命令与文档类的OnFileSave成员函数在内部关联。OnFileSave()函数会完成下列操作:
(1)弹出通用文件“保存”对话框,让用户输入一个文件名。
(2)调用文档类对象的CDocument::OnSaveDocument()虚函数,接着又自动调用Serialize()函数,将CArchive对象的内容保存在文档中。

关闭文档
当用户试图关闭文档(或退出应用程序)时,应用程序会根据用户对文档的修改与否来进一步完成下列任务。
(1)若文档内容已修改,则弹出一个“消息”对话框,询问用户是否保存修改后的文档。当用户选择“是”,则应用程序执行OnFileSave过程。
(2)调用CDocument::OnCloseDocument()虚函数,关闭所有与该文档相关联的文档窗口及相应的视图,调用文档类的DeleteContents清除文档数据。