Я пытаюсь сравнить два значения 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);