OLE技术
<wbr></wbr>
译者注:(整体通讯架构:OLE客户端应用程序<</span>——>
OLE客户端库<</span>——>
OLE服务器库<</span>——>
OLE服务器应用程序)
<wbr></wbr>
概要:
<wbr><span></span>OLE</wbr>是一种技术,可以用来创建复杂文档,这些复杂文档包含的信息来自不同的渠道(数据源)。例如,一个支持OLE的字处文档(例如word)能够支持嵌入的表格对象。与传统的“拷贝和
<wbr></wbr>
粘贴”方式不一样,“拷贝和粘贴”会改变粘贴信息的格式。但是嵌入的文档会保留所有原来的属性。如果用户打算编辑嵌入的数据,windows操作系统会激活原来的应用程序(例如excel)
<wbr></wbr>
并(在excel中)载入这个嵌入的文档。
<wbr></wbr>这篇文档提供一个OLE库的概述;讨论虚拟方法表(VTBL
virtual method table)的数据结构,虚拟方法表对每个OLE应用程序都是需要的;进一步我们再讨论OLE应用程序中如何使用windows剪贴板。
<wbr></wbr>
更多信息
OLECLI.DLL - OLE客户端库
<wbr><span></span>OLECLI.DLL</wbr>,在微软windows环境中,OLE客户端库提供服务用来简化OLE客户端应用程序的开发。在客户端应用程序和OLE客户端库之间进行双向通讯(译者注:就是相互发消息)。客户端
<wbr></wbr>
应用程序调用OLE客户端库中的函数来执行OLE任务,例如创建对象,渲染(译者注:一般就是指界面显示,特别是图形的显示方式),载入和保存对象。OLE客户端库通过应用程序注册的回调函数给应用程序发送状态信息。这个库在回调函数中发给客户应用程序的状态数据中包含了通知,例如通知对象发生了改变,被重命名,被保存或者被OLE服务器应用程序关系等。
<wbr></wbr>
OLESVR.DLL - OLE服务器库
<wbr><span></span>OLESVR.DLL</wbr>,OLE服务器库为OLE服务器应用程序提供服务。在服务器应用程序和OLE服务器库之间进行双向通讯(译者注:就是相互发消息)。服务器应用程序调用服务器库中的函数来注册或者注销它自己。注册后服务器应用程序就可用了,注销后就它就不能再用了。它也会调用服务器库中的函数来保存或者重命名一个文档。服务器库通过一个回调函数的集合(这个集合包含了27个定义好的回调函数)来传递信息给服务器应用程序。每一个服务器应用程序的回调函数被服务器库调用来请求服务器执行指定的动作,或者通知服务器应用程序某个指定的时间发生了。这些回调函数通常也被称为调用方法。
<wbr></wbr>
Object Handlers对象句柄
(Object Handlers,译者注:通常就是一个标识符,或者说是一个id,用来唯一标识一个事务)
<wbr></wbr>最终用户一般就关心两类OLE应用程序:客户端应用程序和服务器应用程序。然而,应用程序开发人员必须还要关心第三种类型的OLE模块,这种类型的OLE模块称作对象句柄。一个对象句柄就是一个动态链接库(DLL),在理解上可以把它当成是一个功能有限的服务器应用程序。对象句柄包含一些功能,这些功能就是服务器应用程序的对象需要支持的功能。举例来说,当客户端
<wbr></wbr>
应用程序调用了一个对象的方法(verb),这时能够处理这个调用的对象句柄被加载到内存(译者注:代码只有加载到内存才能执行),接下来对象句柄就处理这个调用。处理后调用后,对象句柄能够自动从内存卸载,这个卸载的过程不需要主服务器应用程序协助。对象句柄提供了一种高效管理对象的方式,因为比起一个(通常都比较大)的完整功能的服务器应用程序来说,
<wbr></wbr>
句柄都更小,也就能够更加高效地加载和卸载。对象句柄和完整功能的服务器应用程序一样,都是使用OLE服务器库来实现的。
<wbr></wbr>
使用VTBL
<wbr></wbr>就像上面讲的那样,从OLE客户端库到客户端应用程序,以及从OLE服务器库到服务器应用程序的通讯,都是通过应用程序定义的回调函数来实现的。在客户端或者服务器应用程序初始化期
<wbr></wbr>
间,它们使用一个指向VTBL数据结构的指针作为参数来调用合适的库(译者注:就是各调各的库)。这个库使用VTBL中的指针来调用应用程序的回调函数。
<wbr></wbr>
<wbr></wbr>举例来说,服务器应用程序提供给OLE服务器库的VTBL称作OLESERVERVTBL。服务器应用程序使用指向6个回调函数的指针来填充OLESERVERVTBL数据结构,这6个回调函数分别实现了Create(创建)、CreateFromTemplate(通过模版创建)、Edit(编辑)、Exit(退出)、Open(打开)、Release(释放)方法。一旦服务器应用程序传递这个初始的VTBL给服务器库以后,服务器库就可以调用这6个方法中的任何一个。从这里可以看到使用VTBL允许OLE库调用应用程序定义的函数,并且函数实现的方法与函数名字无关。(译者注:就是说OLE库可以不用关心你的函数名称,开发人员可以随便定义,只要符合模版定义的参数格式就行了。因为使用的指针是函数的地址,根本就不是通过函数名称来调用的)
<wbr></wbr>
<wbr></wbr>对熟悉C++语言的程序员来讲,VTBL的概念类似于C++虚拟方法的概念。实际上,VTBL和虚拟方法是很相关的。VTBL允许OLE库指定客户端或者服务器应用程序必须实现的方法(method,译者注:其实就是指函数),当然也允许针对每一个对象类型定义不同的方法实现(译者注:就是说同一个方法可以有不同的实现方法,比如说排序,可以是快排,也可以是冒泡。但是对外面都是一样的,就是实现了排序这个功能method)。
<wbr></wbr>
Inter-library Communicatio库间通讯
(译者注:就是指客户端库和服务器端库这两个库之间怎么通讯)
<wbr><span></span>OLE</wbr>库的最初版本在微软windows软件开发工具集(SDK)的3.1版本中开始提供,这个时候库之间的相互通讯采用的是(dynamic
data exchange (DDE))动态数据交换消息协议。客户端和
<wbr></wbr>
服务器库使用WM_DDE_EXECUTE在彼此之间发送标准的OLE命令。在windows
3.1版本的SDK中,OLE库的实现没有使用(Dynamic
Data Exchange Management Library (DDEML))动态数据交换管
<wbr></wbr>
理库来开发。原因是DDEML和OLE库是并行开发的。OLE库后续的版本可以使用DDEML或者其他进程间通讯机制。
<wbr><span></span>OLE</wbr>库使用的库间通讯协议隐藏在库里面了,它就不应该影响OLE客户端和服务器应用程序的设计。
<wbr></wbr>
The Shell Library - Shell库
<wbr></wbr>需要OLE应用程序也使用第三方的库SHELL.DLL。Shell库提供API函数允许应用程序读取和修改windows注册表数据库。注册表包含了系统安装的OLE服务器的信息,以及他们支持的对象类型
<wbr></wbr>
和动作(verb)。Shell库也对通过windows文件管理器来拖拽文件的操作提供支持。如果OLE客户端应用程序实现了拖拽功能,文件可以从文件管理器中拖出来,打开文档的客户端应用程序支持
<wbr></wbr>
嵌入这个文件,那么这个文件就可以放到这个文档中。(译者注:例如,word是客户端应用程序,word可以支持电子表格(excel)。如果打开了一个word文档,由于word文档支持电子表格,这时拖拽一个excel文件到word中,就可以把这个电子表格嵌入到word文档中。注意,这时候excel就是服务器)
<wbr></wbr>
Placing an OLE Object on the Clipboard -把OLE对象放入到剪贴板中
<wbr></wbr>表示格式用来指定如何显示一个对象(译者注:翻译比较拗口,就是说规定了显示方法,就决定了最后看到的对象是个什么样子)。当服务器应用程序在剪贴板中放入一个对象时,它指定
<wbr></wbr>
了对象的一个或者多个图形表现方式,这个表示格式可以包含元文件(metafile(CF_METAFILEPICT))格式,设备相关的位图(CF_BITMAP)格式,或者设备无关的位图(CF_DIB)格式。当用户在
<wbr></wbr>
客户端应用中粘贴对象到这个容器文档(译者注:比如一个打开的word文档)时,OLE库使用这些表示格式(译者注:就是上面说的那3种)来显示对象。由于尺寸改变时,位图或者元文件格
<wbr></wbr>
式通常会发生改变,对象的效果(appearance)又依赖于表示格式,因此对象最终的显示效果也可能发生变化。嵌入对象保存在剪贴板上,可以是所有者链接(OwnerLink)格式、原生(Native)(
<wbr></wbr>
译者注:就是没有改变,就是原来怎么样,保存到剪贴板中还是什么样)、或者是前面描述的三种格式(CF_METAFILEPICT,CF_BITMAP,CF_DIB)之一。每一种表示和预定义的windows格式中都
<wbr></wbr>
有一个名字常量的定义,这些常量定义在SDK包含的头文件WINDOWS.H中。每个OLE应用程序必须调用RegisterClipboardFormat函数来在windonws中注册OwnerLink和Native格式。
分享到:
相关推荐
### 使用C++Builder中的OLE技术存取Excel表数据 #### 概述 本文旨在探讨如何在C++Builder环境中运用OLE技术实现对Excel表格数据的读写操作。通过具体实例,详细介绍了实现这一功能的具体步骤和技术要点。 #### C++...
OLE技术是Microsoft开发的一种用于应用程序间共享数据的标准,它允许不同应用程序之间的对象进行链接或嵌入,从而实现数据的交互和复用。 ### OLE技术概述 OLE技术的发展源于早期的数据共享需求,最初由Microsoft...
OLE技术的应用广泛,尤其是在商业软件中,例如电子表格、字处理程序和财务软件。通过OLE,用户可以在一个文档中插入来自其他应用程序的数据,并且这些数据可以实时更新。例如,一个报告文档中可以包含一个链接到...
通过学习ABAP OLE技术,开发者能够控制其他程序,使得SAP系统能够自动化执行其他程序的任务,例如Microsoft Office应用程序的操作,这种技术在数据导入导出、自动化报告生成等方面尤为有用。 知识点概述如下: 1. ...
在深入探讨基于VB的OLE技术实现液压阀CAD的图库管理这一主题之前,我们需要了解一些基本概念和技术。OLE(对象链接与嵌入)技术是微软公司推出的一种用于Windows环境的系统服务,它允许不同应用程序之间的数据共享与...
【OLE技术@面向对象】 OLE(Object Linking and Embedding,对象链接与嵌入)是一种在Windows操作系统中实现复合文档的技术,它允许在一个文档中嵌入或者链接其他应用程序创建的对象,比如图片、图表或者文字处理...
在介绍遥测数据处理结果报告自动化生成的过程中,文章主要涉及了OLE技术、遥测数据处理、C++Builder编程语言、Word文档处理软件等关键技术。 首先,OLE技术,全称是对象链接与嵌入技术(Object Linking and ...
此外,可能还涵盖了OLE拖放和动态数据交换(DDE)等早期版本的OLE技术,这些技术在90年代初广泛用于应用程序间的交互。 综上所述,了解COM和OLE对于开发Windows平台的应用程序至关重要,特别是对于那些需要集成多种...
通过上述知识点的介绍,我们了解了在VB中如何利用OLE技术来操作OLE服务器应用程序(如MS Word),包括创建OLE对象、操作OLE对象以及与数据库结合的应用场景。这些知识点对于开发基于VB的应用程序来说非常重要,能够...
Windows对象是OLE技术中的基本组件,指的是被嵌入或链接的实体。Windows对象具有丰富的接口,用于处理标准数据传输、通知单、复合文档和自动化等。此外,Windows对象也支持通知单(Notifications),这是一种机制,...
组件对象模型是OLE技术的基石,它定义了一系列接口和协议,允许对象通过这些接口实现特定的功能。 Windows对象在OLE 2中扮演着重要角色,其中涉及构件对象模式(Component Object Model,COM)的对象和接口。构件...
《Inside OLE 2nd Edition》是关于OLE技术的经典著作,由微软的专家Steve Mcconnell撰写。这本书深入浅出地介绍了OLE 2.0的高级编程技术,对于想要深入了解和掌握OLE的开发者来说是一本不可多得的参考书。 在书中,...
ABAP简单的OLE练习 本文档旨在介绍ABAP中的OLE(Object Linking and ...本文档介绍了ABAP中OLE技术的简单应用,包括OLE技术的应用、ABAP中的OLE对象、对Excel的操作、内部表的应用、CALL METHOD语句的应用等知识点。
#### 一、OLE技术概述 OLE(Object Linking and Embedding),即对象链接与嵌入,是一项由微软公司开发的重要技术标准,旨在为不同应用程序之间提供一种通用的数据交互方式。这项技术的核心是允许开发者创建可重用...
本文探讨了如何利用SQL技术和OLE Automation技术,与Excel软件结合,增强VFP中的报表功能,以设计出满足实际需求的报表。 首先,需要了解SQL(Structured Query Language)技术。SQL是用于访问和操作数据库的标准...
OLE技术允许在一个文档中嵌入或链接到另一个文档,使得用户可以在一个程序中操作来自不同程序的数据,如在Word文档中插入Excel表格或者PowerPoint幻灯片。下面我们将详细探讨OLE对象及其工作原理。 一、OLE概述 OLE...
本文将深入探讨PowerBuilder中的OLE编程技术,并通过三个具体实例——操作Word、Excel和Business Objects文档对象,展示如何在PowerBuilder中运用OLE技术。 ### 一、OLE技术简介 OLE技术由Microsoft开发,是...
总结起来,"pb打开web ole控件"是PowerBuilder开发中一个实用的技术,它利用OLE技术实现了PB应用与Web浏览器的融合,使得桌面应用也能展现和交互网页内容。不过,随着技术的演进,开发者也需要关注并考虑更新的集成...
在Delphi6这个强大的Windows应用开发环境中,利用OLE技术,开发者可以创建能够与其他应用程序交互的应用程序,比如插入、编辑和显示来自其他应用程序的对象,如Excel表格或Word文档。本篇文章将深入探讨如何在Delphi...