Есть COM-интерфейс ISourceDB
interface ISourseDB : IUnknown{
[propget, helpstring("Название источника данных"), helpcontext(11)] HRESULT DataSourse([out, retval] BSTR* pVal);
[propput, helpstring("Название источника данных"), helpcontext(11)] HRESULT DataSourse([in] BSTR newVal);
[propget, helpstring("Тип идентифинации"), helpcontext(12)] HRESULT IdentificationDB([out, retval] ULONG* pVal);
[propput, helpstring("Тип идентифинации"), helpcontext(12)] HRESULT IdentificationDB([in] ULONG newVal);
[, helpstring("Обновление данных"), helpcontext(13)] HRESULT Update_Dlg(void);
[, helpstring("Сохранение результата"), helpcontext(14)] HRESULT Resulting(void);
};
Наследует его C# ActiveX компонент
public partial class AcceptedClientsDataGrid : UserControl, ISourseDB
{
#region ISourseDB Members
string ISourseDB.DataSourse
{
get
{
return m_DataSourse;
}
set
{
m_DataSourse = value;
}
}
uint ISourseDB.IdentificationDB
{
get
{
return _IdentificationDB;
}
set
{
_IdentificationDB = value;
}
}
void ISourseDB.Resulting()
{
MessageBox.Show("Resulting stub");
}
void ISourseDB.Update_Dlg()
{
MessageBox.Show("Data Source=" + m_DataSourse + ");
}
}
Вызывает компонент MFC-приложение, которое отдает ему параметры подключения.
Ax.Create(L"", wStyle, rect, this, IDD_MAP);
IUnknown * pUn = Ax.GetControlUnknown();
ISourseDB * pElem = NULL;
pUn->QueryInterface(IID_ISourseDB, (void**)&pElem );
Names_Sourse_DB * pDB =((CMainFrame *)GetParentFrame())->GetSourse_DB();
pElem->put_IdentificationDB(pDB->mType);
pElem->put_DataSourse(pDB->DBName);
pElem->Update_Dlg();
pElem->Release();
IdentificationDB получается на ура. А DataSourse приходит пустой.
Не подскажете в чем проблема?