有人告诉我,每一个COM方法从C++代码调用(就拿IHTMLDocument2::write
)具有等效的C声明,从C代码可用...C++的Win32 - COM方法:相当于C声明
如何我能找到它吗?
在此先感谢!
有人告诉我,每一个COM方法从C++代码调用(就拿IHTMLDocument2::write
)具有等效的C声明,从C代码可用...C++的Win32 - COM方法:相当于C声明
如何我能找到它吗?
在此先感谢!
此特定接口被记录为由<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声明。可能会很痛苦。
类型R Interface::Foo(T1, ..., Tn)
的方法调用只需转换为R Foo(Interface*, T1, ..., Tn)
。
它们在编译为C时可用,即未定义__cplusplus
或定义了CINTERFACE
。
的确看起来很痛苦;-) 谢谢! – zakk 2009-10-26 15:30:17