VARIANT
関数を使用して VC++ の2 つの値を比較しようとしていVarCmp
ます。
VARIANT a;
VariantInit(&a);
a.vt = VT_UINT;
a.uintVal = 32;
VARIANT b;
VariantInit(&b);
b.vt = VT_UINT;
b.uintVal = 32;
HRESULT hr = VarCmp(&a, &b, LOCALE_USER_DEFAULT);
戻ると思っていましたが、実際には 0x80020008、「変数の型が正しくありません」がVarCmp
返されます。VARCMP_EQ
このコードの何が問題になっていますか?
編集:ジョーのコメントに基づいて他のタイプをいくつか試してみたところ、驚くべき結果が得られました。
動作しません:
a.vt = VT_UINT; a.uintVal = 32;
CComVariant a((unsigned int)32);
作品:
a.vt = VT_I4; a.lVal = 32;
CComVariant a((long)32);