多个文档类型、视图和框架窗口

在其文档、视图和它的框架窗口中的标准关系在 文档/视图创建中描述。 许多应用程序只支持单个文档类型 (该类型,但可能的多个打开文档) 以及对文档和一帧"窗口中的单个视图每个文档。 但是,一些应用程序可能需要修改一个或多个这些默认值。

您想进一步了解什么?

  • 多文档类型

  • 多个视图。

  • 多个框架窗口

  • 拆分窗口

多文档类型

MFC 应用程序向导为您创建一个类文件。 在某些情况下,中,但是,您可能需要一个支持多文档类型。 例如,应用程序可能需要的工作表和图表文档。 每个文档类型由自己的记录类和可能由自己的视图类。 在用户选择文件的命令时,框架中显示一个列出支持的文档类型的对话框。 然后它创建用户选择类型的文档。 每个文档类型由自己的文档模板对象管理。

若要创建其他类的文档,请参见 添加类。 选择 CDocument,类类型派生自和提供请求文档信息。 然后实现新的类的数据。

若要调用过的文档框架类,您必须自己添加第二次调用。在应用程序类的重写中 InitInstanceAddDocTemplate。 有关更多信息,请参见 文档模板

多个视图。

大多数文档只需要一个支持多视图,但单个文件的视图是可能的。 若要帮助您实现多视图,文档对象保留其视图列表,为添加和移除视图提供成员函数,并允许提供多个视图的成员知道函数 UpdateAllViews 文档的数据发生更改。

MFC 支持需要在同一文档的三个常见用户界面的多个视图。 这些模型是:

  • 同一类,每个的对象视图中一个 MDI 文档框架窗口。

    您可能要支持在文档上创建第二个框架窗口。 用户选择新的 Windows 命令打开第二个框架用于同一文档为用途然后使用同时显示两帧文档的不同部分。 框架通过副本初始框架窗口和视图支持在 Windows 菜单上的"新建窗口"命令 MDI 应用程序的附加到文档。

  • 同一类的视图对象在同一文档的框架窗口。

    拆分窗口将单个文档窗口中的视图空间到文档的多个单独的视图。 框架创建从同一视图类的多个视图对象。 有关更多信息,请参见 拆分窗口。

  • 不同的类在单个视图对象框架窗口。

    在此模型中,拆分窗口的区别,多视图共享一个框架窗口。 视图是通过不同的类,提供不同方式的每个视图。构造显示的文档。 例如,大纲视图中,当另一模式时,它显示一个视图在普通模式可能显示一字处理文档。 拆分控件允许用户调整视图的相对大小。

下面图,分为部分 A,b 和 c,中出现的顺序进行显示三用户界面的模型。

多视图用户界面

多视图用户界面

框架提供这些模型通过实现"新建窗口"命令和通过提供类,如 CSplitterWnd拆分窗口所述。 可以实现其他模型使用这些作为起始点。 有关阐释视图不同的配置,框架窗口和拆分的示例程序,请参见 MFC 示例

有关 UpdateAllViews的更多信息,请参见和" MFC 参考SCRIBBLE 示例CView 的类。

多个框架窗口

可以使用在 Windows 菜单上的"新建窗口"命令为 MDI 应用程序创建可以在同一文档第二个框架窗口。 有关更多信息,请参见位于 多个视图、用户界面图中的第一个模型。

拆分窗口

在拆分窗口,窗口是也可以是,拆分到两个或多个使用滚动窗格。 一个拆分控件 (或“拆分”框) 中窗口框架在滚动条旁边允许用户调整窗格的相对大小。 每个窗格是在同一文档的视图。 在“Dynamic”拆分视图,与类,如 多个视图、用户界面图的部分 B 所示。 在“静态”拆分,视图可以是不同的类。 拆分窗口的类型由类支持。CSplitterWnd

动态拆分窗口,但同一类视图中,允许用户任意拆分窗口分为多个不同窗格然后滚动窗格中查看文档的不同部分。 用户可以 unsplit 还移除其他视图的窗口。 拆分窗口添加到 SCRIBBLE 示例 是一个示例。 该主题描述创建动态拆分窗口的方法。 动态拆分窗口的关系图中 多个视图、用户界面B 的部分显示。

静态拆分窗口,具有不同的"类视图"的,与窗口的起始时间拆分到多个窗格,每次使用不同的用途。 例如,在 Visual C++ 编辑器,位图图像显示窗口并行两个窗格。 左侧窗格显示位图的一个与原物相同大小的图像。 右手窗格显示同样的缩放的或已放大的位图图像。 窗格用户可以将更改窗格的相对大小的“拆分条分隔”。 静态拆分窗口的关系图中显示的 多个视图、用户界面C 这样。

有关更多信息,请参见和" MFC 参考MFC 示例CSplitterWnd 的类。

请参见

概念

文档/视图体系结构