请教IDispatch::Invoke

toto996 2011-03-15 04:39:59
在这个函数中有一个参数VARIANT FAR* pVarResult。现在我需给调用此函数者返回一个字符串,那就是意味着要将字符串放到pVarResult里?
如果是,如何做。是否是这样
VariantInit(pVarResult);
V_VT(pVarResult) = VT_BSTR;
pVarResult->bstrVal = SysAllocString(TEXT(",,,,,"));
如果是这样,由谁来负责释放SysAllocString分配出来的内存
...全文
109 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
toto996 2011-03-16
  • 打赏
  • 举报
回复
谢谢,结贴
qman007 2011-03-15
  • 打赏
  • 举报
回复
由调用者负责释放。
因为com对象无法返回给调用者
基于栈的数据,因此对于指针
类型的返回值(不包括接口指针)都是
重新实例化该指针类型的数据返回给
调用者,对于com对象接口类型的指针
的返回,com规范规定需要增加该com对象
的引用计数Addref(),调用者使用完毕后需要减少
该com对象的引用计数Release().
也就是说 内存资源的申请和释放是由
com对象和调用者一起配合完成的。

3,248

社区成员

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

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