您的位置:首页 > 其它

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

2017-02-28 21:24 253 查看
文档/视图的创建中描述了文档、它的视图和它的框架窗口之间的标准关系。许多应用程序支持单文档类型,但可以出现该类型的多个打开的文档,单文档类型指在文档上具有单个视图,而且每个文档只有一个框架窗口的文档类型。但一些应用程序可能需要改变一个或多个这些默认值。

多文档类型

“MFC 应用程序向导”为您创建单个文档类。但在一些情况下,可能需要支持一个以上的文档类型。例如,您的应用程序可能需要工作表和图表文档。每种文档类型由各自的文档类表示,可能的话还由各自的视图类表示。当用户选择“新建文件”命令时,框架显示出一个对话框,其中列出了受支持的文档类型。然后框架创建用户所选类型的文档。每个文档由各自的文档模板对象进行管理。

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

若要使框架知道其他文档类,必须在应用程序类的 InitInstance 重写中再添加一个对 AddDocTemplate 的调用。

多视图

许多文档只要求单个视图,但可能支持每个文档有一个以上的视图。为了帮助您实现多个视图,文档对象保留其视图的列表,提供用于添加和移除视图的成员函数,并提供 UpdateAllViews 成员函数,以使多个视图知道文档数据更改的时间。

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

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

可能要支持创建文档的第二个框架窗口。用户可以选择“新建窗口”命令打开第二个具有同一文档视图的框架,然后使用这两个框架同时查看文档的不同部分。通过复制最初附加到文档的框架窗口和视图,框架支持 MDI 应用程序“窗口”菜单上的“新建窗口”命令。

· 

· 同一文档框架窗口中同一类的视图对象。

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

· 

· 单个框架窗口中不同类的视图对象。

在此模型中,拆分窗口的变体(即多个视图)共享单个框架窗口。这些视图是从不同的类构造成的,因此每个视图可提供查看同一文档的不同方式。例如,一个视图可以以正常模式显示字处理文档,而另一个视图则以大纲模式显示该文档。拆分条控件使用户得以调整视图的相对大小。

· 

下图被分成 a、b、c 三部分,按上面介绍的顺序显示三个用户界面模型。
多视图用户界面

框架通过实现“新建窗口”命令和提供 CSplitterWnd 类来提供这些模型,详见拆分窗口中的讨论。可以用这些作为起点实现其他模型。有关阐释视图、框架窗口和拆分条的不同配置的示例程序,请参见 MFC
示例。

有关 UpdateAllViews 的更多信息,请参见“MFC 参考”中的 CView 类和 Scribble
示例。

多框架窗口

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

拆分窗口

在拆分窗口中,窗口被(或可以)拆分为两个或更多的可滚动窗格。窗口框架中滚动条旁边的拆分条控件(或“拆分框”)使用户得以调整窗格的相对大小。每个窗格是同一文档的一个视图。在“动态”拆分条中,视图属于同一类,如图多视图用户界面
b 部分所示。在“静态”拆分条中,视图可以属于不同类。CSplitterWnd 类支持这两种拆分窗口。

动态拆分窗口具有同一类的视图,使用户得以随意将窗口拆分为多个窗格,然后滚动不同的窗格以查看文档的不同部分。用户还可以撤消拆分窗口以移除其他视图。添加到 Scribble
示例的拆分窗口即属此例。该主题描述创建动态拆分窗口的技术。动态拆分窗口如图多视图用户界面
b 部分所示。

静态拆分窗口具有不同类的视图,从被拆分为多个窗格的窗口开始,每个窗格具有不同的用途。例如,在 Visual C++ 位图编辑器中,图像窗口并列显示两个窗格。左窗格显示位图实物原样大小的图像。右窗格显示同一位图的缩小或放大的图像。窗格由“拆分条”分隔,用户可以拖动该“拆分条”更改窗格的相对大小。静态拆分窗口如图多视图用户界面
c 部分所示。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: