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


__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 для образцов.

См. также

Ссылки

Ключевые слова C++

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

event_source

event_receiver

__unhook

__raise