首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将结构传递给IDispatch方法

将结构传递给IDispatch方法
EN

Stack Overflow用户
提问于 2011-01-20 06:55:47
回答 1查看 800关注 0票数 3

在第三方COM模块中,我必须将一个结构传递给一个方法。

IDL定义的重要部分如下所示:

代码语言:javascript
复制
interface ITheirInterface : IDispatch {
    [id(0x0000012d)]
    HRESULT TheirMethod([in] TheirStruct Attributes);
};

struct TheirStruct {
    BSTR TheirFieldA;
    BSTR TheirFieldB;
} TheirStruct;

I如何使用ATL从C++调用该方法?

代码语言:javascript
复制
CComPtr<IDispatch> comPtr; 
comPtr.CoCreateInstance(L"theirModule.TheirCoClass");
CComVariant returnValue;
CComVariant attribute= I_DO_NOT_KNOW_WHAT_TO_PLACE_HERE;
comPtr.Invoke1(T2COLE(L"TheirMethod"),&attribute,&returnValue);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-20 07:30:51

COM对结构的自动化支持非常弱,CComVariant不直接支持它。您需要使用IRecordInfo并创建VT_RECORD类型的变体。从GetRecordInfoFromTypeInfo或GetRecordInfoFromGuids获取IRecordInfo接口指针。祝好运。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4741769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档