Как реализовать исходящий интерфейс для объекта-приемника (C ++)

У меня есть предопределенный файл TLB с реализациями метода оболочки IS8SimulationEvents, например:

inline HRESULT IS8SimulationEvents::S8SimulationReset ( ) {
    HRESULT _result = 0;
    _com_dispatch_method(this, 0x1, DISPATCH_METHOD, VT_ERROR, (void*)&_result, NULL);
    return _result;
}

Используя Oleview, я вижу интерфейс IConnectionPointContainer, прикрепленный к COM-объекту.

Вопрос:

  • Как реализовать исходящий интерфейс для объекта-приемника, чтобы клиент получал уведомление о событии от объекта

Без:

  • ATL
  • MFC

person Aaron    schedule 18.01.2009    source источник


Ответы (1)


В этой статье объясняется, как реализовать источники / приемники точек подключения на простом языке C http://www.codeproject.com/KB/COM/com_in_c5.aspx

Вероятно, вся серия статей Джеффа Глатта «COM in plain C» более чем рекомендована, если вы хотите понять COM на низком уровне.

PD: Lambdasoft Comet - это фреймворк, реализующий COM-оболочки, не использующие ATL / MFC, он довольно устарел, но если вам нужно что-то простое, стоит взглянуть на https://bitbucket.org/sofusmortensen/comet/ или http://www.lambdasoft.dk/comet/.

person Ismael    schedule 18.01.2009
comment
Спасибо, вы можете сделать простую иллюстрацию? - person Aaron; 18.01.2009
comment
Каждая статья от CP содержит образец проекта, это намного лучше, чем все, что я могу предоставить. Загрузите его, скомпилируйте и проверьте, что это за поведение, чтобы вы могли его обойти. - person Ismael; 18.01.2009
comment
Позор - файл больше не доступен :( - person Aaron; 18.01.2009
comment
Образец проекта есть, но вы должны быть зарегистрированным пользователем. - person Ismael; 18.01.2009
comment
Хорошо, Xhantt, спасибо. Но на самом деле я ищу чистую реализацию на C ++. Мне удалось автоматизировать приложение, мне просто нужно выяснить, как его адаптировать для обработки уведомлений о событиях с сервера COM-объектов ... - person Aaron; 18.01.2009