__unhook__unhook

イベントからハンドラー メソッドの関連付けを解除します。Dissociates a handler method from an event.

構文Syntax

long  __unhook(
   &SourceClass::EventMethod,
   source,
   &ReceiverClass::HandlerMethod
   [, receiver = this]
);
long  __unhook(
   interface,
   source
);
long  __unhook(
   source
);

パラメーターParameters

& SourceClass :: EventMethodイベント ハンドラー メソッドをアンフックするイベント メソッドへのポインター。& SourceClass :: EventMethod A pointer to the event method from which you unhook the event handler method:

  • ネイティブ C++ イベント:SourceClassはイベント ソース クラスとEventMethodはイベントです。Native C++ events: SourceClass is the event source class and EventMethod is the event.

  • COM イベント:SourceClassはイベント ソース インターフェイスとEventMethodそのメソッドの 1 つです。COM events: SourceClass is the event source interface and EventMethod is one of its methods.

  • マネージ イベント:SourceClassはイベント ソース クラスとEventMethodはイベントです。Managed events: SourceClass is the event source class and EventMethod is the event.

interfaceinterface
アンフックされるインターフェイス名受信者である COM イベント レシーバーにのみ、 layout_dependentのパラメーター、 event_receiver属性がtrueします。The interface name being unhooked from receiver, only for COM event receivers in which the layout_dependent parameter of the event_receiver attribute is true.

sourcesource
イベント ソースのインスタンスへのポインター。A pointer to an instance of the event source. コードに応じてtypeで指定されているevent_receiverソース次のいずれかを指定できます。Depending on the code type specified in event_receiver, source can be one of the following:

  • ネイティブ イベント ソース オブジェクト ポインター。A native event source object pointer.

  • IUnknown-ベース ポインター (COM ソース)。An IUnknown-based pointer (COM source).

  • マネージド オブジェクトのポインター (マネージド イベントの場合)。A managed object pointer (for managed events).

& ReceiverClass :: HandlerMethodイベントからアンフックするイベント ハンドラー メソッドへのポインター。& ReceiverClass :: HandlerMethod A pointer to the event handler method to be unhooked from an event. ハンドラーが同じではへの参照またはクラスのメソッドとして指定します。クラス名を指定しない場合 _ _unhookクラスで呼び出されることを前提としています。The handler is specified as a method of a class or a reference to the same; if you do not specify the class name, __unhook assumes the class to be that in which it is called.

  • ネイティブ C++ イベント:ReceiverClassはイベント レシーバー クラスとHandlerMethodはハンドラーです。Native C++ events: ReceiverClass is the event receiver class and HandlerMethod is the handler.

  • COM イベント:ReceiverClassはイベント レシーバー インターフェイスとHandlerMethodそのハンドラーの 1 つです。COM events: ReceiverClass is the event receiver interface and HandlerMethod is one of its handlers.

  • マネージ イベント:ReceiverClassはイベント レシーバー クラスとHandlerMethodはハンドラーです。Managed events: ReceiverClass is the event receiver class and HandlerMethod is the handler.

受信側(省略可能) イベント レシーバー クラスのインスタンスへのポインター。receiver(optional) A pointer to an instance of the event receiver class. 受信側を指定しない場合、既定はレシーバー クラスまたは構造体です _ _unhookが呼び出されます。If you do not specify a receiver, the default is the receiver class or structure in which __unhook is called.

使用法Usage

イベント レシーバー クラス外の main を含む、任意の関数スコープで使用できます。Can be use in any function scope, including main, outside the event receiver class.

RemarksRemarks

組み込み関数を使用して _ _unhookの関連付けを解除、つまり「アンフック」イベント メソッドのハンドラー メソッドに、イベント レシーバー内で。Use the intrinsic function __unhook in an event receiver to dissociate or "unhook" a handler method from an event method.

3 つの形式がある _ _unhookします。There are three forms of __unhook. ほとんどの場合、最初の形式 (引数が 4 つ) を使用できます。You can use the first (four-argument) form in most cases. 2 番目 (引数が 2 つ) の形式を使用する _ _unhook ; COM イベント レシーバーにのみ、イベント インターフェイス全体がアンフックされます。You can use the second (two-argument) form of __unhook only for a COM event receiver; this unhooks the entire event interface. 3 番目 (引数が 1 つ) の形式は、指定したソースからすべてのデリゲートをアンフックする場合に使用します。You can use the third (one-argument) form to unhook all delegates from the specified source.

ゼロ以外の戻り値は、エラーが発生したことを示します (マネージド イベントは例外をスローします)。A nonzero return value indicates that an error has occurred (managed events will throw an exception).

呼び出す場合 _ _unhookイベントおよびフックされていないイベント ハンドラーでは、その効果はありません。If you call __unhook on an event and event handler that are not already hooked, it will have no effect.

コンパイル時に、コンパイラはイベントが存在することを確認し、指定されたハンドラーを使用してパラメーターの型チェックを実行します。At compile time, the compiler verifies that the event exists and does parameter type checking with the specified handler.

COM イベントを除き、 _ _hook_ _unhookイベント レシーバーの外部で呼び出すことができます。With the exception of COM events, __hook and __unhook can be called outside the event receiver.

使用する代わりに _ _unhook -= 演算子を使用することです。An alternative to using __unhook is to use the -= operator.

新しい構文でマネージ イベントのコーディングについては、次を参照してください。イベントします。For information on coding managed events in the new syntax, see event.

注意

テンプレート クラスまたは構造体にイベントを含めることはできません。A templated class or struct cannot contain events.

Example

参照してくださいネイティブ C++ でのイベント処理COM でのイベント処理サンプル。See Event Handling in Native C++ and Event Handling in COM for samples.

関連項目See also

キーワードKeywords
event_sourceevent_source
event_receiverevent_receiver
__event__event
__hook__hook
__raise__raise