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


Реализация интерфейса обработки событий

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

Наиболее распространенными способами реализации интерфейса с помощью ATL являются:

  • Производный от пользовательского интерфейса напрямую.

  • Производный от IDispatchImpl для двух интерфейсов, описанных в библиотеке типов.

  • Производный от IDispEventImpl для dispinterfaces, описанных в библиотеке типов.

  • Производный от IDispEventSimpleImpl для dispinterfaces, не описанных в библиотеке типов или если вы хотите повысить эффективность, не загружая сведения о типе во время выполнения.

Если вы реализуете пользовательский или двойной интерфейс, следует посоветовать источнику событий, вызвав AtlAdvise или CComPtrBase::Advise. Вам потребуется отслеживать файл cookie, возвращенный вызовом самостоятельно. Вызовите AtlUnadvise , чтобы нарушить подключение.

Если вы реализуете метод dispinterface с помощью IDispEventImpl или IDispEventSimpleImpl, обратитесь к источнику событий, вызвав IDispEventSimpleImpl::D ispEventAdvise. Вызовите IDispEventSimpleImpl::D ispEventUnadvise , чтобы нарушить подключение.

Если вы используете IDispEventImpl в качестве базового класса составного элемента управления, источники событий, перечисленные на карте приемника, будут рекомендуется и не рекомендуется автоматически использовать CComCompositeControl::AdviseSinkMap.

IDispEventSimpleImpl И IDispEventImpl классы управляют файлом cookie для вас.

См. также

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