イベント処理インターフェイスの実装
ATL を使用すると、イベントの処理に必要な 3 つの要素 (イベント インターフェイスの実装、イベント ソースの通知、イベント ソースの通知解除) すべてに対応できます。 実行する必要がある正確な手順は、イベント インターフェイスの種類と、アプリケーションのパフォーマンス要件によって異なります。
ATL を使用してインターフェイスを実装する最も一般的な方法は次のとおりです。
カスタム インターフェイスから直接派生させます。
IDispatchImpl から派生させます (タイプ ライブラリに記述されるデュアル インターフェイスの場合)。
IDispEventImpl から派生させます (タイプ ライブラリに記述されるディスパッチ インターフェイスの場合)。
IDispEventSimpleImpl から派生させます (タイプ ライブラリに記述されないディスパッチ インターフェイスの場合、または実行時に型情報を読み込まずに効率を向上させたい場合)。
カスタム インターフェイスまたはデュアル インターフェイスを実装する場合は、AtlAdvise または CComPtrBase::Advise を呼び出してイベント ソースに通知する必要があります。 呼び出しによって返された Cookie を自分で追跡する必要があります。 接続を切断するには AtlUnadvise を呼び出します。
IDispEventImpl
または IDispEventSimpleImpl
を使用してディスパッチ インターフェイスを実装する場合は、IDispEventSimpleImpl::DispEventAdvise を呼び出してイベント ソースに通知する必要があります。 接続を切断するには、IDispEventSimpleImpl::DispEventUnadvise を呼び出します。
IDispEventImpl
を複合コントロールの基底クラスとして使用している場合、シンク マップに一覧表示されているイベント ソースは、CComCompositeControl::AdviseSinkMap を使用して自動的に通知よび通知解除されます。
IDispEventImpl
クラスおよび IDispEventSimpleImpl
クラスでは Cookie が管理されます。