文档/视图体系结构

默认情况下,MFC 应用程序向导会使用文档类和视图类创建应用程序主干。 MFC 将数据管理分隔到这两个类中。 文档存储数据并管理打印数据以及协调更新数据的多个视图。 视图显示数据并管理用户与数据的交互,包括选择和编辑。

在此模型中,MFC 文档对象读取数据并将数据写入持久存储。 文档还可以提供与数据的接口,无论数据驻留在何处(如数据库中)。 单独的视图对象管理数据显示(从在窗口中呈现数据到用户选择和编辑数据)。 视图从文档获取显示数据,并将任何数据更改传达回给文档。

虽然可以轻松替代或忽略文档/视图分隔,但在大多数情况下,有令人信服的理由遵循此模型。 最佳原因之一是需要相同文档的多个视图(例如电子表格和图表视图)时。 文档/视图模型允许单独的视图对象表示数据的每个视图,而对所有视图通用的代码(如计算引擎)可以驻留在文档中。 每当数据发生更改时,文档也会执行更新所有视图的任务。

借助 MFC 文档/视图体系结构,可以轻松地支持多个视图、多种文档类型、拆分窗口和其他重要的用户界面功能。

对于用户和程序员而言,最常看到的 MFC 框架部分是文档和视图。 使用该框架开发应用程序的大多数工作涉及编写文档和视图类。 此文章系列会介绍:

  • 文档和视图的用途以及它们在框架中的交互方式。

  • 必须执行哪些操作才能实现它们。

文档/视图的核心是四个关键类:

CDocument(或 COleDocument)类支持用于存储或控制程序数据的对象,并为程序员定义的文档类提供基本功能。 文档表示用户通常使用“文件”菜单上的“打开”命令打开并使用“文件”菜单上的“保存”命令保存的数据单元。

CView(或其许多派生类之一)可为程序员定义的视图类提供基本功能。 视图附加到文档并充当文档与用户之间的中介:视图在屏幕呈现文档的图像,并将用户输入解释为对文档的操作。 视图还呈现图像以用于打印和打印预览。

CFrameWnd(或其变体之一)支持围绕文档的一个或多个视图提供框架的对象。

CDocTemplate(或是 CSingleDocTemplateCMultiDocTemplate)支持的对象可协调给定类型的一个或多个现有文档,并管理为该类型创建正确文档、视图和框架窗口对象。

下图显示文档与其视图之间的关系。

View is the part of the document that's displayed.
文档和视图

类库中的文档/视图实现将数据本身与其显示和用户对数据的操作分隔开来。 对数据的所有更改都通过文档类进行管理。 视图调用此接口来访问和更新数据。

文档、其关联视图和围绕视图的框架窗口由文档模板创建。 文档模板负责创建和管理一种文档类型的所有文档。

你想进一步了解什么

另请参阅

用户界面元素
Windows
框架窗口
文档模板和文档/视图创建过程
文档/视图创建
创建新文档、窗口和视图