次の方法で共有


__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 は メソッドの 1 つです。

    • マネージ イベント : SourceClass は イベント ソース クラスでありEventMethod は イベントです。

  • interface
    event_receiver の属性のパラメーターが truelayout_dependent な COM のイベント レシーバーにのみ receiver から外れるインターフェイス名。

  • source
    イベント ソース インスタンスへのポインター。event_receiver で指定されたコード type によって ソースは 次のいずれかです :

    • ネイティブ イベント ソース オブジェクトのポインター。

    • IUnknown の COM ベースのポインター (ソース)。

    • マネージ オブジェクトのポインター (マネージ イベントの場合)。

  • ReceiverClass::HandlerMethod
    イベント ハンドラー メソッドへのポインター。イベントから外れる。ハンドラーは同じクラスへの参照またはのメソッドとして指定します ; クラス名を指定しない場合**__unhook** はというクラスが entity unhook であると仮定します。

    • ネイティブ C++ のイベント : ReceiverClass は イベント レシーバーのクラスです HandlerMethod はハンドラーです。

    • COM イベント : ReceiverClass は イベント レシーバーのインターフェイスです HandlerMethod はハンドラーの 1 つです。

    • マネージ イベント : ReceiverClass は イベント レシーバーのクラスです HandlerMethod はハンドラーです。

  • receiver(省略可能)
    イベント レシーバー クラスのインスタンスへのポインター。レシーバーを指定しない場合既定値は __unhook が構造体またはレシーバー クラスです。

使用方法

すべての関数スコープではイベント レシーバー クラスの外側の関数がもかまいません。

解説

分離するためにイベント レシーバーで組み込み関数 __unhook を使用してイベント ハンドラーからメソッド 「メソッド」をオフにしてください。

__unhook の 3 とおりの形式があります。最初の引数 (4) フォームをほとんどの場合に使用できます。COM イベント レシーバーにのみ __unhook の 2 番目の引数 (2) 形式を使用できます ; これはのイベント インターフェイスを外します。指定したソースからすべてのデリゲートを外すには3 番目の引数 (1) 形式を使用できます。

ゼロ以外の戻り値はエラーが発生したことを示します (マネージ イベントは例外をスローします)。

既に引っ掛からないイベント ハンドラーとイベントの __unhook を呼び出すと効果はありません。

コンパイル時にコンパイラはイベントがあり指定されたハンドラーに確認するパラメーター型を確認します。

COM イベントを除く__hook と __unhook はイベント レシーバーの外部で呼び出すことができます。

__unhook を使用する方法は- = 演算子を使用します。

新しい構文ではコーディングのマネージ イベントの詳細についてはイベント (Visual C++) を参照してください。

[!メモ]

テンプレート クラスまたは構造体にイベントを含めることはできません。

使用例

例についてはネイティブ C++ のイベント処理COM のイベント処理 を参照してください。

参照

関連項目

C++ のキーワード

event_source

event_receiver

__event

__hook

__raise