Передача интерфейса
От: LelicDsp Россия  
Дата: 09.03.05 16:22
Оценка:
Вот вопрос от не большого знатока ATL/COM.
Есть интерфейсы скажем
interface IReader : IUnknown
{
  void Read(BSTR* pStr);
};
//

и классы
class CNetReader: IDispatchImpl<INetReader>, public IReader;
class CPortReader: IDispatchImpl<IPortReader>, public IReader;

class CMyTest DispImpl<IMyTest>
{
  IReader* m_pReader
public:
  void Bind(IReader* pReader){m_pReader = pReader;};
  void Test(){m_pReader->Read(...);};
};

Идея понятна, есть класс CMyTest, который может работать через разный транспорт. С реализацией не получается. Необходимо, что бы клиенское приложение можно было написать на VBA, VB, VBScript, Perl ну и C++ естественно.

Если пишу так как указано выше — ругается перл. Он не понимает не-dispatch инетрфейсов (в данном случае iReader). Если передаю как IUnknown IDispatch или VARIANT не работает VBA по совершенно непонятной причине. Замучался уже, время жалко тратить на изучение всего этого добра, поможите кто может.

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