2011-09-25 118 views

回答

6

VARIANT_TRUE#在WTypes.h中定义。你不能直接在你的.idl中使用它。常见的方法是简单地直接使用的价值,就像是在做mshtml.idl例如:

[id(42)] HRESULT Foo([in, defaultvalue(-1)] VARIANT_BOOL bar); 

或者,你可以,如果你喜欢的#define添加到您的.idl,把它附近的某处顶部:

#define VARIANT_TRUE -1 
#define VARIANT_FALSE 0 
+0

您是否知道使用'TRUE'也适用于'VARIANT_BOOL'?我很好奇哪种方法可以做到这一点。 – Motti

+1

TRUE有错误的值。鉴于mshtml.idl是一个核心微软头文件,我假设-1是*官方*方式。 –

+0

'TRUE'在C++中有错误的值,在IDL中它似乎具有正确的值(请参阅我的答案)。关于MSHTML.idl,您在哪里找到它,我有从DLL生成的.tlh和.tli,但不是原始的.idl – Motti

1

尽管我们不应当混淆bool, BOOL and VARIANT_BOOL看来在IDL BOOL被解释为VARIANT_BOOL值。

[id(42)] HRESULT Foo([in, defaultvalue(TRUE)] VARIANT_BOOL bar); 

当从VBScript调用无参数指定此到达C++代码-1

我不确定哪种方式比较习惯TRUE或@Hans建议-1