|
7.1文档/视图概念 7.1.1概念 在文档视结构里,文档是一个应用程序数据基本元素的集合,它构成应用程序所使用的数据单元;另外它还提供了管理和维护数据的手段。 文档是一种数据源,数据源有很多种,最常见的是磁盘文件,但它不必是一个磁盘文件,文档的数据源也可以来自串行口、网络或摄像机输入信号等。在第十二章“多线程和串行通信编程”中,我们展示了如何使用串行口作为数据输入的文档/视结构程序。文档对象负责来自所有数据源的数据的管理。 视图是数据的用户窗口,为用户提供了文档的可视的数据显示,它把文档的部分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交互的界面,它把用户的输入转化为对文档中数据的操作。每个文档都会有一个或多个视图显示,一个文档可以有多个不同的视图。比如,在Excel电子表格中,我们可以将数据以表格方式显示,也可以将数据以图表方式显示。一个视图既可以输出到窗口中,也可以输出到打印机上。 图7-1说明了文档及其视图之间的关系。
图 7-1 文档和视图 MFC的文档/视结构机制把数据同它的显示以及用户对数据的操作分离开来。所有对数据的修改由文档对象来完成。视图调用这个对象的方法来访问和更新数据。 7.1.2两类文档视结构程序 有两种类型的文档视结构程序:单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。 在单文档界面程序中,用户在同一时刻只能操作一个文档。象Windows95下的NotePad记事本程序(如图7-2所示)就是这样的例子。在这些应用程序中,打开文档时会自动关闭当前打开的活动文档,若文档修改后尚未保存,会提示是否保存所做的修改。因为一次只开一个窗口,因此不象WORD那样需要一个窗口菜单。单文档应用程序一般都提供一个File菜单,在该菜单下有一组命令,用于新建文档(New)、打开已有文档(Open)、保存或换名存盘文档等。这类程序相对比较简单,常见的应用程序有终端仿真程序和一些工具程序。
图7-2 单文档程序(记事本) 一个多文档界面应用程序也能操作文档,但它允许同时操作多个文档。如图7-2,Microsoft Word就是这样的例子。你可以打开多个文件(同时也就为每个文件打开一个窗口),可以通过切换活动窗口激活相应的文档进行编辑。多文档应用程序也提供一个File菜单,用于新建、打开、保存文档。与单文档应用程序不同的是,它往往还提供提供一个Close(关闭)菜单项,用于关闭当前打开的文档。多文档应用程序还提供一个窗口菜单,管理所有打开的子窗口,包括对子窗口的新建、关闭、层叠、平铺等。关闭一个窗口时,窗口内的文档也被自动关闭。在这一章里,我们只讨论单文档界面应用程序的编制,有关多文档技术在下一章里再做讨论。
图7-3 多文档程序(Microsoft Word) 7.1.3使用文档/视结构的意义 文档视结构的提出对于广大程序员来说是一个福音,它大大简化了多数应用程序的设计开发过程。文档视结构带来的好处主要有:
由于文档视结构功能如此强大,因此一般我们都首先使用AppWizard生成基于文档/视结构的单文档或多文档框架程序,然后在其中添加自己的特殊代码,完成应用程序的特定功能。但是,并非所有基于窗口的应用程序都要使用文档/视结构。象Visual C++随带的例子Hello、MDI都没有使用文档/视结构。有两种情况不宜采用文档、视结构:
本教程由Visual C++王朝 |