MFC 框架的核心是文档和视图的概念。 文档是用户在编辑会话中交互的数据对象。 它由“文件”菜单上的“新建”或“打开”命令创建,通常保存在文件中。 (标准 MFC 文档派生自类 CDocument
,不同于活动文档和 OLE 复合文档。视图是一个窗口对象,用户通过该对象与文档交互。
正在运行的应用程序中的关键对象包括:
线程对象
如果应用程序创建单独的执行线程(例如,在后台执行计算),将使用派生自
CWinThread
的类。CWinApp
本身派生自CWinThread
应用程序中的执行(或主进程)的主线程。 还可以在辅助线程中使用 MFC。应用程序对象
应用程序类(派生自
CWinApp
)控制上述所有对象,并指定应用程序行为,例如初始化和清理。 应用程序的一个和唯一的应用程序对象为应用程序支持的任何文档类型创建和管理文档模板。文档模板或模板
文档模板协调文档、视图和框架窗口的创建。 从类
CDocTemplate
派生的特定文档模板类创建和管理一种类型的所有打开的文档。 支持多种类型的文档的应用程序具有多个文档模板。 将类 CSingleDocTemplate 用于 SDI 应用程序,或使用 MDI 应用程序的类CMultiDocTemplate
。框架窗口
视图显示在“文档框架窗口”内。在 SDI 应用程序中,文档框架窗口也是应用程序的“主框架窗口”。 在 MDI 应用程序中,文档窗口是主框架窗口中显示的子窗口。 派生的主框架窗口类指定包含视图的框架窗口的样式和其他特征。 如果需要自定义框架窗口,请派生自
CFrameWnd
自定义 SDI 应用程序的文档框架窗口。 派生自CMDIFrameWnd
自定义 MDI 应用程序的主框架窗口。 此外,CMDIChildWnd
从派生类以自定义应用程序支持的每个不同类型的 MDI 文档框架窗口。文档或文档。
文档类(派生自
CDocument
)指定应用程序的数据。如果需要应用程序中的 OLE 功能,请根据所需的功能类型从
COleDocument
其派生类或其派生类之一派生文档类派生。视图或视图。
视图类(派生自
CView
)是用户的“数据窗口”。视图类控制用户如何查看文档的数据并与之交互。 在某些情况下,你可能希望文档具有数据的多个视图。如果需要滚动,请派生自
CScrollView
. 如果视图具有在对话模板资源中布局的用户界面,请派生自CFormView
。 对于简单文本数据,请使用或派生自CEditView
。 对于基于表单的数据访问应用程序(如数据输入程序)派生自CRecordView
(对于 ODBC)。 此外,还有类CTreeView
,CListView
以及CRichEditView
。
在正在运行的应用程序中,这些对象协作响应用户作,由命令和其他消息绑定在一起。 单个应用程序对象管理一个或多个文档模板。 每个文档模板创建和管理一个或多个文档(具体取决于应用程序是 SDI 还是 MDI)。 用户通过框架窗口中包含的视图查看和作文档。 下图显示了 SDI 应用程序在这些对象之间的关系。
正在运行的 SDI 应用程序中的对象
本系列文章的其余部分介绍了框架工具、MFC 应用程序向导和资源编辑器如何创建这些对象、它们如何协同工作以及如何在编程中使用它们。 窗口对象和文档/视图体系结构中更详细地讨论了文档、视图和框架窗口。