Russian Qt Forum

Qt => ActiveX => Тема начата: mad_celt от Ноябрь 03, 2009, 00:15



Название: Что я не так делаю, товарищи! [out] BSTR* и QString&
Отправлено: mad_celt от Ноябрь 03, 2009, 00:15
В компоненте

Код
C++ (Qt)
STDMETHODIMP CConnection::GetConnectionParams(BSTR* login, BSTR* pass, BSTR* db)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
 
CString sLogin = L"wyvern";
CString sPass = L"wyvern";
CString sDb = L"XE";
 
*login = sLogin.AllocSysString();
*pass = sPass.AllocSysString();
*db = sDb.AllocSysString();
 
return S_OK;
}
 

idl-ка
Код
C++ (Qt)
[id(1), helpstring("method GetConnectionParams")] HRESULT GetConnectionParams([out] BSTR* login, [out] BSTR* pass, [out] BSTR* db);
 

В qt-приложении
Код
C++ (Qt)
   QAxObject object("ShellCore.Connection");
   QString login, pass, db;
   object.dynamicCall("GetConnectionParams(QString&,QString&,QString&)", login, pass, db);
   QMessageBox::information(0, "Debug", login + " " + pass + " " + db);
 

и login, и pass, и db - пустые...
я уже немножко отчаялся))
Через queryInterface, работой с интерфейсами и BSTR напрямую все замечательно... А так - ни в какую...


Название: Re: Что я не так делаю, товарищи! [out] BSTR* и QString&
Отправлено: Rcus от Ноябрь 03, 2009, 04:53
Действительно, с чего бы им измениться.
У QAxBase есть две перегрузки метода dynamicCall: одна принимает (const QVariant &), другая (QList<QVariant>&) ... хм...


Название: Re: Что я не так делаю, товарищи! [out] BSTR* и QString&
Отправлено: mad_celt от Ноябрь 03, 2009, 08:21
Все, понял, получилось, спасибо)
Нооо... Почему же такое ограничение?)


Название: Re: Что я не так делаю, товарищи! [out] BSTR* и QString&
Отправлено: Rcus от Ноябрь 03, 2009, 08:24
Эм, ограничение?


Название: Re: Что я не так делаю, товарищи! [out] BSTR* и QString&
Отправлено: mad_celt от Ноябрь 03, 2009, 22:13
Не суть, в общем)
Спасибо огромное!
Тема исчерпана.