关于COM的问题,有较深理解的朋友来看看(100分)

  • 主题发起人 主题发起人 Cavidy
  • 开始时间 开始时间
C

Cavidy

Unregistered / Unconfirmed
GUEST, unregistred user!
1。Tcomobject 的iunknown接口大家应该比较熟悉,但它没有自动完成marshal,
如果手动完成会很复杂,所以直接在Tcomobject实现自动化很麻烦,普通大家实现ole,
都是通过继承Tautoobject,它实现了Idispatch,隐蔽了很多底层的东东,的确比较方便。
我不明白的是,为什么delphi的高版本中,Tautoobject实现的接口方法必须返回一个
Hresult类型,好像底版本时,是可以的。。。。

2。所谓的tcomobject在ole上的局限到底是什么,我感觉唯一的区别就是没有idispatch
的支持,以至于象vb这样的语言无法直接访问
 
1 一定要这样的话,可能是MS的规范。
2 同感,后期绑定应该实现双接口
 
终于找到了原因,原来ole实现时,必须用safecall,导致了hresult的存在
 
问题还不是特别明朗,希望高手们继续给予关注和解释,谢谢
 
我也比较关注Com但是我不是太明白.
 
我是搞VC++的,我说两句
IUnkonwn 和 IDispatch主要区别再调度方式,调度时间,调度的类型,
就像IDL和ODL区别, IDispatch主要是适应平面接口
至于HResult的问题,好像不是问题
COM返回知都是那个样子的, 你要是见过其他的返回值那是因为包装的结果
实际上就是一个具有[out, retval]属性的参数
 
TAutoObject support dual interface, it is used to implement ole automation
TComobject is only for delphi programming
 
多人接受答案了。
 
后退
顶部