CWinApp::OnFileNew() CWinApp::OnFileOpen()
| |
--------------------------- | CWinApp::OpenDocumentFile()
| 有多个文档模板? |-------------->- |
--------------------------- 是
| | 用户选择文件名
否 提示用户选择
| 一种文档模板 |
根据文件类型选择文档模板
得到确定的文档模板对象-<------------------------------------------------
CSingleDocTemplate::OpenDocumntFile()
或
CMultiDocTemplate::OpenDocumentFile()
——————————————————————————————————————————————————————————
构造文档对象 CMainFrame::Create(…) ①
or
构造文档边框窗口对象 CMainFrame::CreateEx(…) ②
(SDI: CMainFrame,
MDI: CChildFrame) CMainFrame::PreCreateWindow()
调用::CreateWindowEx(…)
创建视图对象(CHelloView)
建立文档边框窗口
CHelloView::Create(…)
or 发出WM_CREATE
CHelloView::CreateEx(…) ③ CMainFrame::OnCreate()
CHelloView::PreCreateWindow() CMainFrame::OnCreateClient()
调用::CreateWindowEx(…)
建立视图窗口
CHelloView::OnCreate()
CHelloDoc::DeleteContents()
Yes
是否打开文档? CHelloDoc::OnOpenDocument()
No
CHelloDoc::OnNewDocument() 打开文件并创建CFile和CArchive对象
文档对象可用 CHelloDoc::Serialize(CArchive& ar)
CHelloView::OnInitialUpdate() 关闭CArchive对象和CFile对象