Поделиться через


ATL Event Handling Summary

В общем случае обработка событий модели COM относительно простой процесс. 3 Основных этапов:

  • Реализуйте интерфейс события в объекте.

  • Источник события посоветуйте, что объект хочет получать события.

  • Unadvise источник события, когда конкретному объекту больше не нужно получать события.

Реализация интерфейса

4 Основных способа реализации интерфейса с использованием библиотеки ATL.

Является производным от

Пригодный для типа интерфейса

Необходимо реализовать все methods*

Требует наличия библиотеки типов во время выполнения

Интерфейс

Vtable

Да

Нет

IDispatchImpl

Сдвоенный

Да

Да

IDispEventImpl

Диспетчерский интерфейс

Нет

Да

IDispEventSimpleImpl

Диспетчерский интерфейс

Нет

Нет

* При использовании классов поддержки библиотеки ATL, никогда не требуется реализовать методы IUnknown или IDispatch вручную.

Advise и Unadvising источник события

3 Основных способа advise и unadvising источник событий с использованием библиотеки ATL.

Посоветуйте функции

Функция Unadvise

Наиболее подходящий для использования с

Необходимо хранить отслеживание cookie?

Комментарии

AtlAdvise, CComPtrBase::Advise

AtlUnadvise

Vtable или двойные интерфейсы

Да

AtlAdvise глобальной функции библиотеки ATL. CComPtrBase::Advise используется CComPtr и CComQIPtr.

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImpl или IDispEventSimpleImpl

Нет

Чем меньше параметров AtlAdvise поскольку базовый класс выполняет дополнительную работу.

CComCompositeControl::AdviseSinkMap (TRUE)

CComCompositeControl::AdviseSinkMap (FALSE)

Элементы управления ActiveX в нескольких элементах управления

Нет

CComCompositeControl::AdviseSinkMap советует всему сопоставлению приемников записей в случае. Эти же unadvises функции записи. Этот метод вызывается классом CComCompositeControl автоматически.

CAxDialogImpl::AdviseSinkMap (TRUE)

CAxDialogImpl::AdviseSinkMap (FALSE)

Элементы управления ActiveX в диалоговом окне

Нет

CAxDialogImpl::AdviseSinkMap советует и unadvises все элементы управления ActiveX в ресурс диалогового окна. Это выполняется автоматически.

См. также

Основные понятия

Обработка событий и ATL

Supporting IDispEventImpl