windows - passerer en struktur til en IDispatch metode

Indlæg af Hanne Mølgaard Plasc

Problem



I et tredjeparts COM-modul skal jeg sende en struktur til en metode.


De vigtige dele af IDL-definitionen ser sådan ud:


interface ITheirInterface : IDispatch {
    [id(0x0000012d)]
    HRESULT TheirMethod([in] TheirStruct Attributes);
};

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


Hvordan kalder jeg metoden fra C ++ ved hjælp af ATL?


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);

Bedste reference


COM automatiseringsunderstøttelse til strukturer er meget svag, CComVariant understøtter det ikke direkte. Du skal bruge IRecordInfo og oprette en variant af typen VT\_RECORD. Hent IRecordInfo interface pointer fra GetRecordInfoFromTypeInfo eller GetRecordInfoFromGuids. Lykke til.