关于ATL聚合的问题?

sunmz_wjxy 2008-06-18 05:10:15
有组件A,B.
A组件的接口有IA1,IA2,IA3.这些接口之间有可能之间关联.
组件B聚合A的接口IA1,我在组件B的IDL文件里暴露了IA1,但不知道如何把A组件的接口全部暴露.
...全文
163 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunmz_wjxy 2008-06-30
  • 打赏
  • 举报
回复
聚合我已经实现了,但就是客户端找不到A组件的其它接口,说未定义的错误.
我在B组件的IDL里不可能一个个暴露A组件的接口吧!这样未免也笨了吧!
paerxiushi 2008-06-29
  • 打赏
  • 举报
回复
外部组件需要保存被聚合组件的代理接口与非代理接口,而被聚合的组件应提供一个构造函数,用于初始化它内部保存的未知接口。当组件不被聚合时,这个未知接口保存自己的非代理接口,而被聚合时,这个未知接口保存外部的接口。这是源程序例子:
http://dl3.csdn.net/fd.php?i=62485187581250&s=efc7500f8cec30e68f59cdac9a7f8dc0
fairyprince 2008-06-21
  • 打赏
  • 举报
回复
在B中,实例A
A 要支持聚合,将B的iunknown传组A,这样在A中就以查到B,当然你也可以不这样做,但不符合com精神
乘下就是在 b 的QueryInterface 中匹配所有A的接口IID,然后转向 a 的QueryInterface.

其实你怎么实面都行,com 只是规定了一些规范是一种标准.只要外面看来是就行了,里面你可以随意.
蒋晟 2008-06-19
  • 打赏
  • 举报
回复
你可以直接在同一个对象上暴露所有接口,用QueryInterface查询接口
你也可以实现IServiceProvider::QueryService返回其他对象的接口
建议你去看看《COM本质论》
sunmz_wjxy 2008-06-19
  • 打赏
  • 举报
回复
谢谢你的回答,不过我不懂这个接口的使用,能不能有个例子给我参照.
如果我不使用这个接口,请问如何暴露A组件所有的接口.
另外我使用的是VC6.
whwenming 2008-06-19
  • 打赏
  • 举报
回复

这些组件是有很大的用途的啊!
蒋晟 2008-06-19
  • 打赏
  • 举报
回复
实现IServiceProvider来暴露接口吧,这样灵活一点。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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