次の方法で共有


イベント処理インターフェイスの実装

ATL を使用すると、イベントの処理に必要な 3 つの要素 (イベント インターフェイスの実装、イベント ソースの通知、イベント ソースの通知解除) すべてに対応できます。 実行する必要がある正確な手順は、イベント インターフェイスの種類と、アプリケーションのパフォーマンス要件によって異なります。

ATL を使用してインターフェイスを実装する最も一般的な方法は次のとおりです。

  • カスタム インターフェイスから直接派生させます。

  • IDispatchImpl から派生させます (タイプ ライブラリに記述されるデュアル インターフェイスの場合)。

  • IDispEventImpl から派生させます (タイプ ライブラリに記述されるディスパッチ インターフェイスの場合)。

  • IDispEventSimpleImpl から派生させます (タイプ ライブラリに記述されないディスパッチ インターフェイスの場合、または実行時に型情報を読み込まずに効率を向上させたい場合)。

カスタム インターフェイスまたはデュアル インターフェイスを実装する場合は、AtlAdvise または CComPtrBase::Advise を呼び出してイベント ソースに通知する必要があります。 呼び出しによって返された Cookie を自分で追跡する必要があります。 接続を切断するには AtlUnadvise を呼び出します。

IDispEventImpl または IDispEventSimpleImpl を使用してディスパッチ インターフェイスを実装する場合は、IDispEventSimpleImpl::DispEventAdvise を呼び出してイベント ソースに通知する必要があります。 接続を切断するには、IDispEventSimpleImpl::DispEventUnadvise を呼び出します。

IDispEventImpl を複合コントロールの基底クラスとして使用している場合、シンク マップに一覧表示されているイベント ソースは、CComCompositeControl::AdviseSinkMap を使用して自動的に通知よび通知解除されます。

IDispEventImpl クラスおよび IDispEventSimpleImpl クラスでは Cookie が管理されます。

関連項目

イベント処理