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