关于OLE的一些概念问题

netsky 2000-02-28 12:00:00
presentation data 和 native data分别是指的什么,二者的区别何在?
另外不知道哪儿有关于OLE的电子书下载,还望告知,谢谢。
...全文
270 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsky 2000-02-29
  • 打赏
  • 举报
回复
谢谢各位,解释得很清楚,非常感谢。
littletao 2000-02-28
  • 打赏
  • 举报
回复
只能回答第2题,msdn中有一本书inside ole,hehe
pam 2000-02-28
  • 打赏
  • 举报
回复
netmare的解释非常清楚,理解presentation data和 native data之间关系的关键在于handler,这也是OLE的复杂之处。在container-handler-server三者之间,有许多具体的规范,上面提到的是对于数据对象的处理,其他还有in-place editing、moniker(用于链接的情形)等。
要想全面了解OLE,一定要读“Inside OLE”(2nd Edition),但是按照我的经验,读起来并不轻松。尽管这本书写在四、五年之前,但是读下来仍然会有许多收获,只是是否有实际意义,那是另一回事了。
qiujoe 2000-02-28
  • 打赏
  • 举报
回复
土豆 2000-02-28
  • 打赏
  • 举报
回复
netmare 2000-02-28
  • 打赏
  • 举报
回复
基本上就象929说的那样,在对象嵌入时,对象中保存了如何画出自身的数据,这样在没有Server介入的情况下,对象也可以在container中显示出来,但该数据只是用来显示对象的,一般是以元文件的形式放在对象中的cache中,这就是Presentation data 。(其实还可能有一种叫handler的东西,是一种轻量级的服务器,以dll的形式存在,可以实现Server的一定功能,与Server结合工作,可以提高效率--大部分工作都是在dll中完成的,在handler中不只有Presentation data ,还可能有native data,这要看它的具体实现而定).
在Server中,对象不只要知道如何画出自身,还保存了对象的状态等数据,对象正是依据这些数据实现其功能的,当然对象在画出自己时也要参考这些数据,这就是Native data。
当你打开文档,其中的嵌入(连接对象会更复杂一些,但原理差不多)对象,被读到内存中,container会要求该对象画出自身,为避免不必要的激活server,有handler完成此功能,如果该对象没有自己的handler,OLE提供了一个缺省的handler,handler读出对象中缓存的Presentation data,将他画在container提供的DC中,当你双击对象激活它时,或要编辑对象时,handler已无法处理此请求,只有激活server了,在server中对对象的改变导致native data改变,而Presentation data相应也会改变,这时server会通知handler数据已变化,并将新的Presentation data传给它,handler以此来更新对象的形象。

929 2000-02-28
  • 打赏
  • 举报
回复
Native data
The data used by an OLE server application when editing an embedded object. See also Presentation data.

Presentation data
The data used by a container to display embedded or linked objects. See also Native data.
上述由MSDN中获得。
我的理解是这样的:在OLE中存在嵌入和链接两种方式,也存在SERVER和CLIENT(CONTAINER)两种关系。在CONTAINER中可以嵌入或链接入SERVER所提供的对象。这个对象由SERVER负责编辑和显示。当一个对象被放入一个CONTAINER中时,它自己本身有对应的信息,由自己处理。比如说对象是如何存放的,内容是如何组织的。而放入CONTAINER中的部分只是对象本身所提供的显示方法来完成的,也就是说是一个显示。这种显示数据与对象自身的数据不一定是完全一样的,它取决于对象中设计的方法。将一个对象的自身以及存放在CONTAINER中的数据联系起来是通过对象或SERVER所注册的CLSID来实现的。在CONTAINER中双击对象,由CONTAINER执行对象所提供的VERB,然后把处理交由对象具体完成。
MSDN中的“INSIDE OLE”不错。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧