Реализация интерфейса обработки событий
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 для вас.