1 M FC 文档视图结构程序结构总揽 当我们使用 MFC AppWizard 生成一个 MFC 程序,选用所有默认的设置(当然也是 Multiple Documents ,本文讨论主要基于 Multiple Documents ,对于 Single Document 情况仅以简单表述提及,皆因后者和前者很多相似相同之处,但前者更为复杂,并且更加常用
),假设你的程序名称为 A ,则你会得到 CMainFrame 、 CChildFrame 、 CAboutDlg 、 CADoc 、 CAView 、 CAApp 6 个类( Single Document 仅少一个 CChildFrame 类,其余均同)
这些类的具体含义将在后面给出,这里先要给出一个 MFC 支持文档视图结构程序(以下简称 App )的主要组成: 一个 App (对应类 CAApp )可以包含多个文档模版( CDocTemplate ),但是 MFC AppWizard (无论是 SDI 还是 MDI )都只是默认生成一个
但是在实际开发中一个文档模版不够,需要自己手工添加(在后面实际项目例子提供示例)
这个结构是通过 MFC 中 CWinApp 的成员变量 CDocManager* m_pDocManager 实现的,我们的 CAApp 正是继承自 MFC 提供的 CWinApp 类
CDocManager 类则拥有一个指针链表 CPtrList m_templateList 来维护这些文档模版
这些文档模版都是在 CAApp :: InitInstance ()中通过 AddDocTemplate(pDocTemplate)
CDocTemplate 拥有 3 个成员变量,分别保存着 Document 、 View 、 Frame 的 CRuntimeClass 指针,另外持有成员变量 m_