У меня есть служба ATL COM, к которой я могу подключиться через приложение Windows Forms .NET4, написанное по большей части для управляемого c ++.
Я могу успешно получить указатель на интерфейс (через CoCreateInstance()), но возникают проблемы при попытке реализовать приемник событий.Я хочу создать неуправляемый класс C ++ в приложении, которое реализует интерфейс, определенный COM-сервером, и получать события от ConnectionPoint.Что у меня так далеко:
- Понимая, что это невозможно, используя управляемый класс (класс ref) c ++, я использую обычный неуправляемый класс.
- в состоянии использовать любые макросы ATL, мне нужно реализовать абстрактные функции IUnknown (AddRef, Release, QueryInterface и т. д.) в классе приемников.
Я могу получить указатель IConnectionPoint для интерфейса, но вызовAdvise () возвращает E_NOTIMPL.Это заставляет меня поверить, что я где-то пропустил реализацию некоторых базовых функций ATL, но я не уверен, с чего начать.
Кроме того, я нашел очень мало ресурсов в сети об использовании COMв управляемом проекте C ++.Самое близкое, к чему я пришел - это эта статья.У кого-нибудь есть хорошее чтение на эту тему?Он покалечил мой мозг в данный момент.