__hook
Связывает метод обработчика событий с событием.
long __hook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __hook(
interface,
source
);
Параметры
&SourceClass::EventMethod
Указатель на метод события, с которым обработчик метод обработчика событий:Собственные события C++: SourceClass источник события и класс EventMethod событие.
События модели COM. SourceClass интерфейс и источник события EventMethod один из его методов.
Управляемые события: SourceClass источник события и класс EventMethod событие.
interface
Имя интерфейса, в закреплянными receiverтолько для приемников событий, в которых модель COM layout_dependent параметр event_receiver атрибут true.source
Указатель на экземпляр источника события.в зависимости от кода type определяется внутри event_receiver" источник может быть одно из следующих значений:Собственный указатель объекта источника события.
IUnknown- указатель на основе модели COM (источник).
Указатель управляемого объекта (для управляемых событий).
&ReceiverClass::HandlerMethod
Указатель на метод обработчика событий, который необходимо закрепить к событию.Обработчик определен как метод класса или ссылки на эти же. если не указать имя класса, __hook принимает класс для разделов, в которой он вызывается.Собственные события C++: ReceiverClass класс приемника событий и HandlerMethod обработчик.
События модели COM. ReceiverClass интерфейс приемника событий и HandlerMethod один из его обработчиков.
Управляемые события: ReceiverClass класс приемника событий и HandlerMethod обработчик.
receiver(необязательно)
Указатель на экземпляр класса приемника событий.Если не указать получателя, то по умолчанию используется класс или структура приемников, в котором __hook вызывает.
Использование
Можно использовать в любой области функции, включая main, вне класса приемника событий.
Заметки
Используйте функцию внутреннеприсущую __hook в приемник событий, который необходимо связать с методом или обработчике метод обработчика события.Указанный обработчик затем вызывается, когда источник вызывает определенное событие.Можно обработчик несколько обработчиков к одному событию или обработчика несколько событий к одному обработчику.
2 Формы __hook.Можно использовать первую форму аргумента (4) в большинстве случаев в частности, для приемников событий, в которых модель COM layout_dependent параметр event_receiver атрибут false.
В этих случаях не требуется обработчик все методы интерфейса перед срабатывание события на одном из методов; метод требуется только при обработке события закрепленным.Можно использовать вторую форму аргумента (2) __hook только для приемника событий в котором модель COM layout_dependent**=true**.
__hook возвращает длинное значение.Ненулевое возвращаемое значение указывает на то, что произошла ошибка (управляемые события вызывают исключение).
Компилятор проверяет существование события и события подпись соглашается с делегатом подписи.
За исключением события модели COM __hook и __unhook может быть вызван вне приемника событий.
Альтернативы использованию __hook использовать оператор +=.
Дополнительные сведения о событиях, управляемых кодирвоанием в новом синтаксисе см. в разделе событие (Visual C++).
Примечание |
---|
Класс-шаблон или структура не могут содержать события. |
Пример
См. Обработка событий в собственном C++ и Обработка событий в модели COM для образцов.