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


Event Handling Principles

3 Общего шага на весь обработки событий. Необходимо:

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

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

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

Способ, с помощью которого необходимо будет реализовать интерфейс события будет зависеть от его типа. Интерфейс событий может быть виртуальной таблицы, двойной или диспетчерский интерфейс. Он до конструктора источника события, чтобы определить интерфейс; это значение необходимо для реализации этого интерфейса.

Примечание

Хотя никаких технических причине, интерфейс события не может быть двойной хороших причинам некоторые конструкции избегайте использования удваивают.Однако это решение сделанное конструктором или разработчик источника события.Поскольку вы работаете с точки зрения события sink, допускать возможность, что не могут иметь любой вариант, но реализация сдвоенный интерфейс события.Дополнительные сведения о сдвоенных интерфейсах см. в разделе Сдвоенные интерфейсы и библиотеки ATL.

Advise источнику события можно разбить на шаге 3.

  • Запросите исходный объект для IConnectionPointContainer.

  • Вызов IConnectionPointContainer::FindConnectionPoint указав идентификатор IID интерфейса события, интересует вас. Если успешно, оно возвратит интерфейс IConnectionPoint для объекта точки подключения.

  • Вызов IConnectionPoint::Advise указав IUnknown приемника событий. Если успешно, оно возвратит файл cookie DWORD, представляющий соединение.

Как только вы успешно зарегистрирован у процент при получении события, методы интерфейса события конкретного объекта будут Вызываются события инициированный в соответствии с исходным объектом. Если которые больше не нужно получать события можно передать файл cookie обратно в точке подключения через IConnectionPoint::Unadvise. Это нарушит связь между источником и утонет.

Следите за тем, чтобы избежать базисные циклы обработка событий.

См. также

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

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