VB.NETのBool型は数値型に変換すると、Trueのときは-1、Falseのときは0

TRUE = 1 じゃないんだ!

VBのBool型とSQL ServerのBit型. VB.NETのBool型は真偽を表す型で、TrueまたはFalseを返します。 数値型に変換すると、Trueのときは-1、Falseのときは0になり、 文字型に変換すると、Trueのときは"True"、Falseのときは"False"になります。 

なのでVC++でVARIANT型で渡されるbool型データのチェックにはこの定義を使いましょう

#define VARIANT_TRUE ((VARIANT_BOOL)-1)

#define VARIANT_FALSE ((VARIANT_BOOL)0)