社区
ATL
帖子详情
我在ATL工程里建立了两个双接口的COM对象,现在我想在A对象的GetB方法中返回B对象的IDispatch接口,应该怎么操作啊?
绝缘
2007-10-27 01:51:27
我在ATL工程里建立了两个双接口的COM对象,现在我想在A对象的GetB方法中返回B对象的IDispatch接口,应该怎么操作啊?
在GetB方法中使用B *pb=new B();编译不通过.
...全文
148
11
打赏
收藏
我在ATL工程里建立了两个双接口的COM对象,现在我想在A对象的GetB方法中返回B对象的IDispatch接口,应该怎么操作啊?
我在ATL工程里建立了两个双接口的COM对象,现在我想在A对象的GetB方法中返回B对象的IDispatch接口,应该怎么操作啊? 在GetB方法中使用B *pb=new B();编译不通过.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
绝缘
2007-10-29
打赏
举报
回复
看样子可以结帖了......
chnuser
2007-10-29
打赏
举报
回复
只要你按我的方法实现。。。
你在VB中可以这样:
1 在VB中把xx.DLL库引用到你的工程中;
2 用dim xx as xx.A;
3 dim xxx as xx.B;
4 set xxx = xx.getB();
绝缘
2007-10-29
打赏
举报
回复
我想让我的COM对象支持索引访问(对象默认属性),如在VB中这样调用:
Set obj=CreateObject("ATL2.Cls1")
MsgBox obj("ccc")
obj("ddd")=10
如何实现?
chnuser
2007-10-29
打赏
举报
回复
我在ATL工程里建立了两个双接口的COM对象,现在我想在A对象的GetB方法中返回B对象的IDispatch接口,应该怎么操作啊?
在A中爆露出B的接口有两种方法。直接爆露和间接爆露。。。
你这种是间接爆露。你只需在GetB中,使用B对象的QueryInterface方法得到IDispatch,后把IDispatch返回即可。
chnuser
2007-10-29
打赏
举报
回复
用queryInterface函数。使用COM接口要通过这个函数。。。。。
绝缘
2007-10-29
打赏
举报
回复
如果直接用new的话,内存是由客户端管理的,而不是COM.用CoCreateInstance是成功的,已经验证过了.
如果我想让我的COM对象支持索引访问(对象默认属性),如在VB中这样调用:
Set obj=CreateObject("ATL2.Cls1")
MsgBox obj("ccc")
obj("ddd")=10
各大高手都来帮帮我啊.
superdiablo
2007-10-29
打赏
举报
回复
我曾经想这样做过,不过感觉不方便,所以用其他方法绕过去了.你如果非得这样做可以试一下以下方法:
1. B *pb=new B; 然后返回(IUNKNOWN *)pb
2. 像楼上说的,用CoCreateInstance创建一个instance,然后返回.
不过没有验证过.
我说的绕过去的方法是让客户去创建,而不是COM创建.
绝缘
2007-10-29
打赏
举报
回复
谢谢yawer,用CoCreateInstance是正确的.还有一个问题啊
如果我想让我的COM对象支持索引访问,如在VB中这样调用:
Set obj=CreateObject("ATL2.Cls1")
MsgBox obj("ccc")
obj("ddd")=10
yawer
2007-10-29
打赏
举报
回复
需要在A的某个函数中cocreateinstance B。我觉得!
chnuser
2007-10-29
打赏
举报
回复
你EMAIL给我。我给你个例子。
AsongWam
2007-10-28
打赏
举报
回复
试试把接口改为Custom类型的,然后把GetB的返回值设为IDispatch*,再用B*强制转换。
使用WTL进行Windows桌面应用开发-第一部
基于Windows平台的
ATL
/WTL桌面应用程序开发. 使用C/C++作为开发语言, 开发Windows本地桌面程序. WTL界面库是MFC的替代选择, 是Win32界面编程的薄封装,可以说学会WTL开发即学会了Win32界面开发。 适合
中
小型公司开发...
COM
组件 I
Dispatch
及
双
接口
的调用
上回书介绍了两种
方法
来写自动化(I
Dispatch
)
接口
的组件程序,一是用 MFC 方式编写“纯粹”的I
Dispatch
接口
;二是用
ATL
方式编写“
双
接口
”的组件。 二、I
Dispatch
接口
和
双
接口
使用者
17.
ATL
实现I
Dispatch
自动化
接口
本文基于
ATL
,演示了自己加载类型库导出ITypeInfo
接口
,借助ITypeInfo
接口
实现I
Dispatch
接口
的过程和
ATL
自己利用I
Dispatch
Impl实现I
Dispatch
的
方法
,据此可以掌握依赖类型库实现I
Dispatch
接口
的
方法
。
[MFC]
ATL
I
Dispatch
调度
接口
I
Dispatch
接口
:完成
接口
调度的
接口
,可以不使用头文件完成
接口
的函数调用 I
Dispatch
接口
函数 1> GetIDsOfNames-根据
接口
函数的名称获取
接口
函数的ID 2> Invoke-根据
接口
函数ID,调用
接口
函数 3>...
I
Dispatch
接口
的作用
网上说法1: I
Dispatch
接口
是
COM
中
比较常用的
接口
。 如果某个
COM
对象
继承了I
Dispatch
...在
ATL
中
,如果
想
使某个
COM
对象
支持I
Dispatch
接口
,那么必须在这个
COM
对象
的属性
中
指定DUAL,即具有
双
重
接口
属性。在支持IDis
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章