Добрый день!
Проблема следующего характера. Есть класс (реализация COM интерфейса):
class C: public IDispatch {
private:
VARIANT m_vValue;
public:
C();
~C();
// IUnknown + IDispatch методы
STDMETHODIMP put_Value(VARIANT prop);
};
и соответственно реалиация основных медотов:
C::C() {
...
VariantInit(&m_vValue);
}
C::~C() {
...
VariantClear(&m_vValue);
}
STDMETHODIMP C::put_Value(VARIANT prop) {
VariantCopy(&m_vValue, &prop);
return S_OK;
}
вызов метода писал так:
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
C* c=new C();
VARIANT arg;
V_VT(&arg)=VT_BSTR;
V_BSTR(&arg)=L"SomeValue";
c->put_Value(arg);
return 0;
}
в итоге в m_vValue: vt=8 [VT_BSTR], bstrVal=L"".
если использовать числовые данные, например VT_UI2, в m_vValue все ОК.
Подскажите, пожалуста, чего я неправильно делаю...