Ole了解

来源:互联网 发布:免费打电话软件 编辑:程序博客网 时间:2024/05/01 08:47

C++对象分类中摒除了Windows句柄,通过对象而不是句柄直接给出成员函数来操作窗口。由于一个成员函数通常称为一个对象变量,在参考手册中同城将这些函数的名称放在一块,并按对象名称本身进行分类。同样,OLE2通过所谓的windows对象,而不是通过API函数来揭示系统功能。通常,一个Windows对象就是一堆代码,通过一组或多组特定函数来表现其功能。每一组函数被称为一个接口。这样的安排是的在系统层更为有序,与分散的基于句柄的功能不同,用户可以工作在机密组织的系统对象之下。

Windows对象是建立在允许一个对象代码在任何地方生存的基础之上的,OLE2引入的对象模式是建立在前些年所作的分布式对象计算的工作基础上的。OLE2通过特定的对象展示了许多关键的系统功能。如剪切板和文件系统。这些对象建立在已有的API函数之上。所有的表层API功能大大减少了,许多API函数被一直到了特定对象的成员函数中,而该对象只有在被操作的时候才能看到。

OLE2中第一个功能部件是构件对象模式。该部件中的一部分是说明(即模式),另一部分是工具。说明部分来源于定义一种为了实现与编程语言无关的对象创建而判定的二元标准,遵循这一标准的对象才能被称为Windows对象。这种二元标准可以使两个应用程序通过对象化接口相互通讯,他支持一个接口,通过该接口,一些其他代码可以了解包含在该对象中的函数名称。

In-place Activation/"Visual Editing"     Linking

            Embedding                                     Compound

     Drag-and-Drop                                     Documents

  Uniform Data Transfer                                                              Automation

                         Compound  Files                        Monikers

Component Objects and the Component Object Modal

构件对象库中的工具提供了少量基本的API函数,这样,使用户能实例什么是所谓的构件对象-----一种用专一分类标示符标识的特殊种类的Windows对象。反过来,用户则被给定了一个对象创建的函数表(称为接口)的指针,通过该指针,用户可调用该函数。该方法在系统中产生了一种标准的对象生成技术,而该系统与所有的编程语言均无关。此外,该方法将用户与实际对象被实现的场所隔离开,这些场所可以是DLL或者是EXE。用户可能忘记其区域,因为构建对象库是在模块之间进行通讯。

为了让对象可通过构建对象库功能来寻址,用户必须以特定的代码--即用户从模块中调用或输出后的特定函数,将它们“关入”DLL或EXE文件中。而对象本身与关入过程无关。调度进程,它通过进程边界传递函数调用和参数。由于一个对象可以在其他进程空间中设置其他机器上执行,构件控件库可以在对象机器对象用户在其他进程空间中运行时完成调用规范的转换以及从16到32位参数的转换。

调度的需要并不是新出现的,OLE1 也必须使用动态数据交换通过进程边界来移动参数或存储器。由异步DDE协定引起的OLE1中的一个主要问题是,对一个对象的函数调用在本质上是异步的,它被迫调用程序等待,知道该函数完成。

接口定义了在对象上实现的一组语义上的相关的功能。接口指针可以被简单的看成是一个指向用户可以从中调用功能的功能表的指针。

接口定义允许改代码通过名称来调用函数,以及提供对参量的类型索引,而不是通过指向数组的索引来调用函数。一个Windows对象可创建一个或多个接口。即为它每个所支持的接口提供例示函数的指针。一个简单的对象,仅支持一个描述数据操作的特定接口。其接口多少取决于对象所实现的功能部件。总之,对象由其所支持的接口的集合来完整的描述,因为每个分离的接口为该对象的用户提供了基本的操作API函数。

在访问接口中,对象的用户可以通过申请指定接口的指针在运行期间来了解该对象的数据传输能力。

一个流对象在概念上等效于我们目前所理解的磁盘上的一个文件,流是数据能够生存的基本文件系统的一个组成部分,每个流均具有访问权限,并有单个的寻址指针。流可以用一组字符串来命名,并可以包含任何内部结构。一个存储对象在概念上等效于一个目录。

复合文件可将应用程序从文件字节的真实位置中隔离出来,正如MS_DOS将应用程序从文件在硬盘中占有的扇区中隔离出来一样。当采用文件句柄访问文件时,MS_DOS将分散的扇区表示成连续的 字节数列。

在OLE中,建立在构件对象模式及复合文件技术上的是一种称作“标准数据传输”的技术,它通过被称作数据对象的一段代码来表现所有数据传送器的功能性--剪切板。拖放、DDE和OLE,这样的数据对象不仅限于通过全局存储器来传送数据,还能利用它的媒介来传送,如符合文件。迄今为止,所有应用程序和任何外部(如剪切板,拖放,DDE和OLE1)之间的数据传送均使用全局存储器,包含在全局存储器中的特定数据格式是通过使用剪切板格式来描述的,如CF_TEXT何CF_BITMAP。Windows使得全局存储器本质上的局限性以及在通过剪切板、拖放、DDE、OLE进行数据传输时具有根本上不同的协议和不相关的API功能不能很好的发挥。

OLE2中的数据传输可以使用复合文件、磁盘文件、全局存储器或其他最适合于数据的媒介。在理解了数据传输时在符合文件的顶部进行工作之后,就可以来看看该OLE2功能是如何建立在第几功能上的。类似的情形有许多。

应用程序可以首先使用数据结构来剪切和赋值剪切板操作。数据对象与编程上的常规剪切板操作代码类似。当用户的数据对象传送数据时,用户可以使用已惯于使用的生成一个句柄传给SetClipboardData的功能。

构件对象模式、符合文件、标准数据传输和拖放技术所构成的OLE2模块,不涉及创建应用程序来支持符合文档的问题。OLE2的其余部分支持所谓的链接与嵌入。复合文档目前仅为建立在底层技术上的OLE2功能的子集,符合文档技术首先是并且最重要的是一个面向应用程序间继承的标准,要遵循由低层提供的标准。构件对象模式所定的对象和对象用户如何通讯的标准、复合文件所定的文件结构的标准以及标准数据传输所定的数据交换功能的标准。复合文档是一个来自其他源的数据的集合。例如一个字处理文档,他可能包括图表、表格、元文件图和位图,所有这些均在不同的应用程序中产生。

原创粉丝点击