Как использовать CAtlComModule для реализации приемника событий COM?

Я пытаюсь реорганизовать существующий и за работой Реализация приемника COM-событий. Класс приемника событий написан на C ++ и находится в DLL, которая использует устаревший CComModule учебный класс. Целью рефакторинга является замена CComModule новым классом ATL 7.0 CAtlComModule.

Существующая реализация объявляет глобальную переменную где-то в файле .cpp:

CComModule _Module;

Как видите, переменная имеет обычное «волшебное» имя _Module, Обычная инициализация отсутствует, однако нигде нет вызова CComModule::Init() и нет также карты объектов COM в проекте DLL. Приемник событий все еще работает, его методы-обработчики событий вызываются должным образом.

Отсутствие какой-либо документации, как перейти от CComModule в CAtlComModuleЯ наивно пытался изменить объявление переменной на это:

CAtlComModule _Module;

Однако это не сработало: после изменения приемник событий перестал работать, то есть его методы обработчика событий больше не вызывались.

Кто-нибудь знает шаги, которые нужно выполнить, чтобы перейти на CAtlComModule? До сих пор я не смог найти решение ни на MSDN, ни через Google, но, возможно, я не выглядел должным образом …

Кстати: при необходимости я могу предоставить более подробную информацию о реализации приемника событий, но до сих пор я чувствовал, что проблема не в этой области.

3

Решение

Самая простая замена «нового стиля» для CComModule выглядит так:

class MyModule : public CAtlDllModuleT<MyModule> {};
MyModule _Module;
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]