2009-10-26 73 views

回答

1

此特定接口被记录为由<mshtml.h>提供。现在,当它发生该文件的二,三线有:

// Include the full header file that works for C 
#include "mshtmlc.h" 

寻找到该文件中,我们找到了声明

/* [id][vararg] */ HRESULT (STDMETHODCALLTYPE *write)( 
     IHTMLDocument2 * This, 
     /* [in] */ __RPC__in SAFEARRAY * psarray); 

注意,这实际上是一个指针IHTMLDocument2::write方法。

有时C声明是相同的头;有时声明不公开。但COM标准是一个ABI(一个二进制接口),可以随时编写一个C声明。可能会很痛苦。

+0

的确看起来很痛苦;-) 谢谢! – zakk 2009-10-26 15:30:17

1

类型R Interface::Foo(T1, ..., Tn)的方法调用只需转换为R Foo(Interface*, T1, ..., Tn)

它们在编译为C时可用,即未定义__cplusplus或定义了CINTERFACE