📄 chap7_1.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>7.1文档/视图概念</title>
</head>
<body link="#3973DE" alink="#3973DE">
<font SIZE="5"><b><div align="center"><center>
<table border="0" width="615" cellspacing="0" cellpadding="0">
<tr>
</b><td><div align="center"><center><table border="0" width="615" cellpadding="0" cellspacing="0" height="20">
<tr>
<td width="377" bgcolor="#15397D" height="20"></td>
<td width="238" bgcolor="#000000" height="20"><p align="right"></font><span style="text-decoration: none"><a href="../../index.htm"><font color="#FFFFFF">电脑报Visual
C++网络教程</font></a></span></td>
</tr>
</table>
</center></div><font FACE="Times New Roman"><b><p ALIGN="CENTER"></b></font><big><big><font color="#3973DE" FACE="Times New Roman">7.1</font><font color="#3973DE">文档<font FACE="Times New Roman">/</font>视图概念</font></big></big><font FACE="Times New Roman" size="5"></p>
<p></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">7.1.1</font><font SIZE="3" color="#3973DE">概念</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">在文档视结构里,文档是一个应用程序数据基本元素的集合,它构成应用程序所使用的数据单元;另外它还提供了管理和维护数据的手段。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">文档是一种数据源,数据源有很多种,最常见的是磁盘文件,但它不必是一个磁盘文件,文档的数据源也可以来自串行口、网络或摄像机输入信号等。在第十二章“多线程和串行通信编程”中,我们展示了如何使用串行口作为数据输入的文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构程序。文档对象负责来自所有数据源的数据的管理。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">视图是数据的用户窗口,为用户提供了文档的可视的数据显示,它把文档的部分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交互的界面,它把用户的输入转化为对文档中数据的操作。每个文档都会有一个或多个视图显示,一个文档可以有多个不同的视图。比如,在</font><font FACE="Times New Roman" SIZE="3">Excel</font><font SIZE="3">电子表格中,我们可以将数据以表格方式显示,也可以将数据以图表方式显示。一个视图既可以输出到窗口中,也可以输出到打印机上。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">7-1</font><font SIZE="3">说明了文档及其视图之间的关系。</font><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><font SIZE="3"><img src="T7_1.gif" alt="T7_1.tif (144248 bytes)" WIDTH="351" HEIGHT="283"></font><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><font SIZE="3">图 </font><font FACE="Times New Roman" SIZE="3">7-1
</font><font SIZE="3">文档和视图</font><font FACE="Times New Roman" SIZE="3"></p>
<p>MFC</font><font SIZE="3">的文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构机制把数据同它的显示以及用户对数据的操作分离开来。所有对数据的修改由文档对象来完成。视图调用这个对象的方法来访问和更新数据。</font><b><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p></font></b><font color="#3973DE" FACE="Times New Roman" SIZE="3">7.1.2</font><font SIZE="3" color="#3973DE">两类文档视结构程序</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">有两种类型的文档视结构程序:单文档界面(</font><font FACE="Times New Roman" SIZE="3">SDI</font><font SIZE="3">)应用程序和多文档界面(</font><font FACE="Times New Roman" SIZE="3">MDI</font><font SIZE="3">)应用程序。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">在单文档界面程序中,用户在同一时刻只能操作一个文档。象</font><font FACE="Times New Roman" SIZE="3">Windows95</font><font SIZE="3">下的</font><font FACE="Times New Roman" SIZE="3">NotePad</font><font SIZE="3">记事本程序(如图</font><font FACE="Times New Roman" SIZE="3">7-2</font><font SIZE="3">所示)就是这样的例子。在这些应用程序中,打开文档时会自动关闭当前打开的活动文档,若文档修改后尚未保存,会提示是否保存所做的修改。因为一次只开一个窗口,因此不象</font><font FACE="Times New Roman" SIZE="3">WORD</font><font SIZE="3">那样需要一个窗口菜单。单文档应用程序一般都提供一个</font><font FACE="Times New Roman" SIZE="3">File</font><font SIZE="3">菜单,在该菜单下有一组命令,用于新建文档(</font><font FACE="Times New Roman" SIZE="3">New</font><font SIZE="3">)、打开已有文档(</font><font FACE="Times New Roman" SIZE="3">Open</font><font SIZE="3">)、保存或换名存盘文档等。这类程序相对比较简单,常见的应用程序有终端仿真程序和一些工具程序。</font><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><img src="T7_2.gif" alt="T7_2.tif (234336 bytes)" WIDTH="476" HEIGHT="391"><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">7-2
</font><font SIZE="3">单文档程序(记事本)</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">一个多文档界面应用程序也能操作文档,但它允许同时操作多个文档。如图</font><font FACE="Times New Roman" SIZE="3">7-2</font><font SIZE="3">,</font><font FACE="Times New Roman" SIZE="3">Microsoft Word</font><font SIZE="3">就是这样的例子。你可以打开多个文件(同时也就为每个文件打开一个窗口),可以通过切换活动窗口激活相应的文档进行编辑。多文档应用程序也提供一个</font><font FACE="Times New Roman" SIZE="3">File</font><font SIZE="3">菜单,用于新建、打开、保存文档。与单文档应用程序不同的是,它往往还提供提供一个</font><font FACE="Times New Roman" SIZE="3">Close(</font><font SIZE="3">关闭</font><font FACE="Times New Roman" SIZE="3">)</font><font SIZE="3">菜单项,用于关闭当前打开的文档。多文档应用程序还提供一个窗口菜单,管理所有打开的子窗口,包括对子窗口的新建、关闭、层叠、平铺等。关闭一个窗口时,窗口内的文档也被自动关闭。在这一章里,我们只讨论单文档界面应用程序的编制,有关多文档技术在下一章里再做讨论。</font><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><img src="T7_3.gif" alt="T7_3.tif (258750 bytes)" WIDTH="536" HEIGHT="368"><b><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">7-3
</font><font SIZE="3">多文档程序(</font><font FACE="Times New Roman" SIZE="3">Microsoft
Word</font><font SIZE="3">)</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font></b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p><font color="#3973DE" FACE="Times New Roman" SIZE="3">7.1.3</font></font><font color="#3973DE"><font SIZE="3"><font SIZE="3">使用文档</font></font><font FACE="Times New Roman" SIZE="3">/</font></font><font SIZE="3" color="#3973DE">视结构的意义</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">文档视结构的提出对于广大程序员来说是一个福音,它大大简化了多数应用程序的设计开发过程。文档视结构带来的好处主要有:</font><font FACE="Times New Roman" SIZE="3"></p>
<blockquote>
<p>a. </font><font SIZE="3">首先是将数据操作和数据显示、用户界面分离开。这是一种“分而治之”的思想,这种思想使得模块划分更加合理、模块独立性更强,同时也简化了数据操作和数据显示、用户界面工作。文档只负责数据管理,不涉及用户界面;视图只负责数据输出与用户界面的交互,可以不考虑应用程序的数据是如何组织的,甚至当文档中的数据结构发生变化时也不必改动视图的代码。</font><font FACE="Times New Roman" SIZE="3"></p>
<p>b.MFC</font><font SIZE="3">在文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构上提供了许多标准操作界面,包括新建文件、打开文件、保存文件、打印等,减轻了用户的工作量。用户不必再书写这些重复的代码,从而可以把更多的精力放到完成应用程序特定功能的代码上:主要是从数据源中读取数据和显示。</font><font FACE="Times New Roman" SIZE="3"></p>
<p>c. </font><font SIZE="3">支持打印预览和电子邮件发送功能。用户无需编写代码或只需要编写很少的代码,就可以为应用程序提供打印预览功能。同样的功能如果需要自己写的话,需要数千行的代码。另外,</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">支持在文档视结构中以电子邮件形式直接发送当前文档的功能,当然本地要有支持</font><font FACE="Times New Roman" SIZE="3">MAPI</font><font SIZE="3">(微软电子邮件接口)的应用程序,如</font><font FACE="Times New Roman" SIZE="3">Microsoft Exchange</font><font SIZE="3">。可以这样理解:</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">已经把微软开发人员的智慧和技术溶入到了你自己的应用程序中。</font><font FACE="Times New Roman" SIZE="3"></p>
</blockquote>
<p></font><font SIZE="3">由于文档视结构功能如此强大,因此一般我们都首先使用</font><font FACE="Times New Roman" SIZE="3">AppWizard</font><font SIZE="3">生成基于文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构的单文档或多文档框架程序,然后在其中添加自己的特殊代码,完成应用程序的特定功能。但是,并非所有基于窗口的应用程序都要使用文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构。象</font><font FACE="Times New Roman" SIZE="3">Visual C++</font><font SIZE="3">随带的例子</font><font FACE="Times New Roman" SIZE="3">Hello</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">MDI</font><font SIZE="3">都没有使用文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构。有两种情况不宜采用文档、视结构:</font><font FACE="Times New Roman" SIZE="3"></p>
<blockquote>
<p></font><font SIZE="3">(</font><font FACE="Times New Roman" SIZE="3">1</font><font SIZE="3">)不是面向数据的应用或数据量很少的应用程序,不宜采用文档</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">视结构。如一些工具程序包括磁盘扫描程序、时钟程序,还有一些过程控制程序等。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">(</font><font FACE="Times New Roman" SIZE="3">2</font><font SIZE="3">)不使用标准的窗口用户界面的程序,象一些游戏等。</font><font FACE="Times New Roman"><b></p>
</b></font>
</blockquote>
<div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
<tr>
<td><a href="chap7.htm">上一页</a></td>
<td><p align="right"><a href="chap7_2.htm">下一页</a></td>
</tr>
</table>
</center></div><font SIZE="5"><hr noshade color="#3973DE" size="1">
<p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>协助制作<br>
未经许可,请勿以任何形式复制</font></td>
<b>
</tr>
</table>
</center></div>
<p ALIGN="CENTER"></b><font SIZE="5"> </font><font FACE="Times New Roman" SIZE="5"></p>
</font><font FACE="Times New Roman" SIZE="3">
<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
</font></b>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p></font> </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -