Windows 3.1中的两个难点:DDE和OLE

Author: Date: 1996-01-26

        一、中文Windows 3.1的动态链接(DDE)
        1.DDE的概念
        DDE是动态数据交换(Dynamic Data Exchange)的缩写。在许多WINDOWS应用程序中都可使用DDE,例如,Microsoft公司的EXCEL 5.0、Word 5.0、FOXPRO 2.5等都支持DDE。实际上,从某种意义上说,DDE就是一种允许Windows应用程序共享数据或相互之间发送信息的消息系统。
        作为DDE如何运行的简单例子,考虑将字处理软件WORD 5.0中文版和电子表格软件EXCEL 5.0中文版一起装入中文WINDOWS 3.1中运行。用户把一些命名的EXCEL电子表格单元与WORD的文档表格链接起来,当EXCEL单元中的数据发生变化,则WORD中的文档表格数据也发生了变化,这些变化是不需要用户去干涉的。
        在DDE的共享数据的技术中,有几个基本概念需要学员了解:
        对象:在Windows应用程序中创建和编辑的数据;
        原文档:包含原内容的文档;
        目标文档:安置对象的文档;
        客户:接收对象的应用程序;
        服务器:提供对象的应用程序。
        将上面的例子与这些基本概念联系起来,命名的EXCEL电子表格单元就是对象,原文档是EXCEL的工作表,目标文档在WORD 5.0。EXCEL是服务器应用程序,而WORD 5.0则是客户应用程序。
        2.DDE的运行机制
        启动一个支持DDE的应用程序时,应用程序马上开始发送有关它的名字和数据文件的消息给其它打开的、支持DDE的Windows应用程序。在任何时候,另一个应用程序能请求把这些消息发送给它自身的一个数据文件。在建立好通信后,它们之间的关系就是客户(Client)/服务器(Server)的关系。提供数据的应用程序称为服务器,请求数据的应用程序称为客户,而通信就是客户与服务器之间的对话。客户应用程序总是启动通信,而服务器应用程序只是简单地对请求作出响应。一个给定的客户应用程序可能同时与几个服务器应用程序进行对话。用户在完成链接关系后,就不再需要用户干预了。
        DDE链接有三种类型,即冷(COLD)、温(WARM)和热(HOT)。冷链接非常象拍快照,它只传送一次数据,之后就不再传送。温链接类似于剪贴板传送。对热链接,若服务器应用程序中的数据发生变化,就会再次传送。热链接是动态的。对于温链接,仅在客户请求时才传送数据。
        3.使用DDE的方法
        下面以一个例子介绍通过DDE的热链接,如何把WORD同EXCEL电子表格单元链接起来。创建热链接的基本步骤如下:
        ● 首先确保两个应用程序都已经启动,且都未收缩为图标形式;
        ● 在EXCEL中使用“文件”-“打开”菜单项打开原工作表;
        ● 选取原文档(即工作表)中的数据,然后,选择EXCEL中的“编辑”-“拷贝”菜单项,将选择的数据拷贝到WINDOWS内存中;
        ● 选择WORD文档,把光标设置于想安装对象的位置。从“编辑”菜单中选择“粘贴特定的”(PASTE Special)。在Paste Special的对话框中选择Unformatted Text and Paste Link(非格式化文本和数据链接),按OK按钮,这样就完成了一个热链接。
        对于上面建立的热链接,WORD文档中的数据总是同电子表格EXCEL中的数据保持一致。
        4.使用DDE的注意点
        DDE是WINDOWS 3.1强大的功能之一,但在使用DDE过程中还需要注意以下的问题:
        ● 用户只能从保存的文档中链接对象。若用户创建了一个用于链接的对象,首先必须将原文档存盘,然后,才能创建链接。
        ● 用户可在同一个WINDOWS应用程序中使用DDE,例如在EXCEL同时编辑几个工作表,然后,建立它们之间的链接关系即可。
        ● 不是所有的WINDOWS应用程序均支持DDE,有的应用程序只有作客户时才支持DDE,另一些应用程序只有作服务器时才支持DDE。例如,WRITE与CARDFILE只能作客户,PAINTBRUSH只能作服务器等。
        ● DDE所支持的数据量是有限的,DDE的数据对象最大容量不能超过64KB。
        二、对象链接与嵌入OLE
        1.OLE的特点
        OLE是中文WINDOWS 3.1新增加的一个重要概念,实际上,OLE是从超级文本(Hypertext)和多媒体模型中借鉴过来的。OLE与DDE的最大差别就是OLE只需调用产生源文件的应用程序进行处理,而处理的对象也只需在目标文件中存储,而不需要象DDE那样同时打开源文件与目标文件。
        对于OLE来说,其链接的对象是“智能化”的,即对象本身带有计算机的指令,如对象可以是EXCEL图表、一个数据库名或地址、一幅图画(PCX类型)、一个录好的声音磁道或任何其它类型的对象等。例如:数据库地址可以嵌入到WORD FOR WINDOWS文档中。在该地址上双击鼠标器按钮,就会打开创建该地址的数据库管理程序,如FOXPRO 2.5 FOR WINDOWS等,并允许对它进行编辑。
        不同类型的对象都可驻留在文档中,对文件来说没有固定的格式,还可以把中文WINDOWS文件看作是一个复杂的文档。若想编辑给定的对象,只需在该对象上双击按钮,则启动了创建该对象的应用程序,并可进行修改及编辑。
        OLE要求多任务操作环境,应用程序之间可发送数据消息。
        2.OLE应用实例
        (1)嵌入对象
        例子:在Write中嵌入一个“画笔”(Paintbrush)的图画对象。
        ● 打开一个Write文档;
        ● 把光标移到需要嵌入对象的位置,即需要插入图画的位置;
        ● 从“编辑”菜单中选择“嵌入对象”(Insert Object),此时,会出现一个对话框,该框列出了计算机中所有支持OLE的WINDOWS应用程序名,例如:
        Microsoft Graph;
        ● 选择插入对象“Microsoft Graph”,然后,按下“确定”按钮;
        ● 在“Microsoft Graph”中打开一个已有的图形文件,或创建一幅图形;
        ● 从“文件”菜单中选择“更新”(Update)命令,使嵌入对象插入到Write文档中;
        ● 选择“文件”中“退出并返回到(文档名)”菜单,退出“Microsoft Graph”程序,继续处理WRITE文档。
        当上面的“嵌入对象”建立后,就可在Write中编辑该图形,就象“Microsoft Graph”是Write的一个应用程序,将其打开后,修改“嵌入对象”,再执行上面最后两步,返回到Write文档中。
        (2)建立链接
        例子:在Paintbrush中建立一个“链接对象”,实现Write的应用链接。
        ● 启动Paintbrush,创建图画(该图画也可从图画文件中读出,或从剪贴板中粘贴过来);
        ● 从“编辑”菜单中选择“拷贝”;
        ● 启动目标应用程序WRITE,并打开文档;
        ● 将光标定位于插入点,从“编辑”菜单中选择“粘贴链接”(PASTE Link)或“粘贴特定的”(Paste Special),“链接对象”插入到Write文档中;
        “链接对象”建立后,链接对象的任何改变都会直接影响Write文件中的图形,也会影响含有该对象的任何其它Windows应用程序。
        (3)嵌入与链接的区别
        嵌入与链接的区别如下:
        A.数据更新的方式不同:“链接对象”的数据变化直接影响目标程序,“嵌入对象”需要通过“更新(Update)”命令的请求后,数据才会影响目标程序。
        B.数据传递的途径不同:“链接”通过剪裁板传递数据,“嵌入”通过插入对象的命令实现。
        C.数据影响的范围不同:“链接”影响所有包含“链接对象”的应用程序,而“嵌入”仅影响发出插入对象命令的单一程序。