VariantCopy и BSTR
От: Korvinus  
Дата: 15.05.06 12:58
Оценка:
Добрый день!
Проблема следующего характера. Есть класс (реализация 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 все ОК.

Подскажите, пожалуста, чего я неправильно делаю...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.