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


__unhook

Разъединяет метод обработчика из события.

long  __unhook(
   &SourceClass::EventMethod,
   source,
   &ReceiverClass::HandlerMethod
   [, receiver = this] 
);
long  __unhook( 
   interface,
   source
);
long  __unhook(
   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
    Указатель на метод обработчика событий, который не обрабатывать из события.Обработчик определен как метод класса или ссылки на эти же. если не указать имя класса, __unhook принимает класс для разделов, в которой он вызывается.

    • Собственные события C++: ReceiverClass класс приемника событий и HandlerMethod обработчик.

    • События модели COM. ReceiverClass интерфейс приемника событий и HandlerMethod один из его обработчиков.

    • Управляемые события: ReceiverClass класс приемника событий и HandlerMethod обработчик.

  • receiver(необязательно)
    Указатель на экземпляр класса приемника событий.Если не указать получателя, то по умолчанию используется класс или структура приемников, в котором __unhook вызывает.

Использование

Можно использовать в любой области функции, включая main, вне класса приемника событий.

Заметки

Используйте функцию внутреннеприсущую __unhook в приемник событий, который требуется разъединить или "расцепите из метода" метод обработчика события.

3 Формы __unhook.Можно использовать первую форму аргумента (4) в большинстве случаев.Можно использовать вторую форму аргумента (2) __unhook только для приемника событий модели COM; это расцепляет весь интерфейс событий.Можно использовать третью форму (одн-аргумента), чтобы не обрабатывать все делегаты из указанного источника.

Ненулевое возвращаемое значение указывает, что произошла ошибка (управляемые события будут вызывать исключение).

Если вызвать __unhook событие и обработчик событий, который еще не закреплены, он не будет иметь эффекта.

Во время компиляции компилятор проверяет, что событие существует, и делает параметр типа проверяющего с указанным обработчиком.

За исключением события модели COM __hook и __unhook может быть вызван вне приемника событий.

Альтернативы использованию __unhook использовать оператор - =.

Дополнительные сведения о событиях, управляемых кодирвоанием в новом синтаксисе см. в разделе событие (Visual C++).

ПримечаниеПримечание

Класс-шаблон или структура не могут содержать события.

Пример

См. Обработка событий в собственном C++ и Обработка событий в модели COM для образцов.

См. также

Ссылки

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

event_source

event_receiver

__event

__hook

__raise