我正在尝试VARIANT
使用以下函数比较 VC++ 中的两个值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);
我预计VarCmp
会返回VARCMP_EQ
,但它实际上返回 0x80020008,“变量类型错误”。这段代码有什么问题?
编辑:我根据乔的评论尝试了一些其他类型,并得到了一些令人惊讶的结果。
不工作:
a.vt = VT_UINT; a.uintVal = 32;
CComVariant a((unsigned int)32);
作品:
a.vt = VT_I4; a.lVal = 32;
CComVariant a((long)32);