如何从C ++向COM公开带有IHTMLDocument *类型参数的方法?

时间:2012-02-24 11:11:22

标签: c# c++ com com-interop

我有一个C ++库(Win32),它填充了我想在.NET(IE工具栏)中使用的网页中的某些字段,但我无法弄清楚如何通过COM公开该方法。我已经知道我应该将它添加到.idl文件中的接口,如下所示:

interface IPlugin : IDispatch{
    #include <mshtml.h> 
    HRESULT FillFields(IHTMLDocument2* pDocument, BSTR value1, BSTR  value2);
};

但是mshtml.h的#include给了我以下错误:

error MIDL2003: redefinition : _LARGE_INTEGER
error MIDL2003: redefinition : _ULARGE_INTEGER
error MIDL2003: redefinition : INT
error MIDL2003: redefinition : Int64ShllMod32

有什么方法可以将IHTMLDocument对象从C#传递给C ++并用C ++修改它的内容,或者COM应该只用于自动化类型,比如BSTR?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用#importIHTMLDocument2的IDL定义纳入MIDL的范围。

MIDL编译器将为您生成#include。 MIDL文件中的显式#include仅在非常狭窄的一组极端情况下有用。