2011-09-25 110 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