このクラスでは IDispatch
メソッドの実装が提供されます。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
template <UINT nID, class T,
const IID* pdiid = &IID_NULL,
const GUID* plibid = &GUID_NULL,
WORD wMajor = 0,
WORD wMinor = 0,
class tihclass = CcomTypeInfoHolder>
class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>
パラメーター
nID
ソース オブジェクトの一意識別子。
IDispEventImpl
が複合コントロールの基本クラスである場合は、このパラメーターに必要な含まれているコントロールのリソース ID を使用します。 それ以外の場合は、任意の正の整数を使用します。
T
IDispEventImpl
から派生したユーザーのクラス。
pdiid
このクラスによって実装されるイベント ディスパッチ インターフェイスの IID へのポインター。 このインターフェイスは、 plibid
、 wMajor
、および wMinor
で示されるタイプ ライブラリで定義する必要があります。
plibid
pdiid
が指すディスパッチ インターフェイスを定義するタイプ ライブラリへのポインター。
&GUID_NULL
場合、タイプ ライブラリはイベントをソーシングするオブジェクトから読み込まれます。
wMajor
タイプ ライブラリのメジャー バージョンです。 既定値は0です。
wMinor
タイプ ライブラリのマイナー バージョンです。 既定値は0です。
tihclass
T
の型情報を管理するために使用されるクラス。 既定値は CComTypeInfoHolder
型のクラスですが、 CComTypeInfoHolder
以外の型のクラスを指定することで、このテンプレート パラメーターをオーバーライドできます。
メンバー
パブリック typedef
名前 | 説明 |
---|---|
IDispEventImpl::_tihclass |
型情報を管理するために使用されるクラス。 既定では、 CComTypeInfoHolder 。 |
パブリック コンストラクター
名前 | 説明 |
---|---|
IDispEventImpl::IDispEventImpl |
コンストラクター。 |
パブリック メソッド
名前 | 説明 |
---|---|
IDispEventImpl::GetFuncInfoFromId |
指定されたディスパッチ識別子の関数インデックスを検索します。 |
IDispEventImpl::GetIDsOfNames |
1 つのメンバーと省略可能な引数名のセットを、対応する整数 DISPID セットにマップします。 |
IDispEventImpl::GetTypeInfo |
オブジェクトの型情報を取得します。 |
IDispEventImpl::GetTypeInfoCount |
型情報インターフェイスの数を取得します。 |
IDispEventImpl::GetUserDefinedType |
ユーザー定義型の基本型を取得します。 |
解説
IDispEventImpl
では、インターフェイスのすべてのメソッドまたはイベントに対して実装コードを指定することなく、イベント ディスパッチ インターフェイスを実装する方法が提供されます。
IDispEventImpl
では、IDispatch
メソッドの実装が提供されます。 必要なのは、処理に関心があるイベントの実装を指定することだけです。
IDispEventImpl
は、クラスのイベント シンク マップと連携して、適切なハンドラー関数にイベントをルーティングします。 このクラスを使用するには、次のようにします。
処理する各オブジェクトの各イベントのイベント シンク マップに、 SINK_ENTRY
マクロまたは SINK_ENTRY_EX
マクロを追加します。 複合コントロールの基底クラスとして IDispEventImpl
を使用する場合は、 AtlAdviseSinkMap
を呼び出して、イベント シンク マップ内のすべてのエントリのイベント ソースとの接続を確立および中断できます。 それ以外の場合、または制御を強化するために、 DispEventAdvise
を呼び出して、ソース オブジェクトと基底クラスの間の接続を確立します。
DispEventUnadvise
を呼び出して接続を切断します。
イベントを処理する必要があるオブジェクトごとに、 IDispEventImpl
( nID
に一意の値を使用) から派生する必要があります。 1 つのソース オブジェクトに対してアドバイズ解除してから、別のソース オブジェクトに対してアドバイズすることで基底クラスを再利用できます。しかし、一度に 1 つのオブジェクトで処理できるソース オブジェクトの最大数は、IDispEventImpl
基底クラスの数によって制限されます。
IDispEventImpl
IDispEventSimpleImpl
と同じ機能を提供しますが、インターフェイスに関する型情報は、_ATL_FUNC_INFO
構造体へのポインターとして提供されるのではなく、タイプ ライブラリから取得されます。 イベント インターフェイスを記述するタイプ ライブラリがない場合、またはタイプ ライブラリの使用に関連するオーバーヘッドを回避する場合は、IDispEventSimpleImpl
を使用します。
注
IDispEventImpl
および IDispEventSimpleImpl
では、各 IUnknown::QueryInterface
および IDispEventImpl
基本クラスが個別の COM ID として機能できるようにしながら、メイン COM オブジェクトのクラス メンバーに引き続き直接アクセスできるようにすることで、独自の IDispEventSimpleImpl
の実装を提供します。
ActiveX イベント シンクの CE ATL 実装では、イベント ハンドラー メソッドからの HRESULT
型または void
の戻り値のみがサポートされます。その他の戻り値はサポートされておらず、その動作は未定義です。
詳細については、「IDispEventImpl
のサポート」を参照してください。
継承階層
_IDispEvent
_IDispEventLocator
IDispEventImpl
要件
ヘッダー: atlcom.h
IDispEventImpl::GetFuncInfoFromId
指定されたディスパッチ識別子の関数インデックスを検索します。
HRESULT GetFuncInfoFromId(
const IID& iid,
DISPID dispidMember,
LCID lcid,
_ATL_FUNC_INFO& info);
パラメーター
iid
[入力] 関数の ID への参照。
dispidMember
[入力] 関数のディスパッチ ID。
lcid
[入力] 関数 ID のロケール コンテキスト。
info
[入力] 関数の呼び出し方法を示す構造体。
戻り値
標準 HRESULT
値。
IDispEventImpl::GetIDsOfNames
1 つのメンバーとオプションの引数名のセットを、対応する整数 DISPID
のセットにマップします。これは、後続の IDispatch::Invoke
の呼び出しで使用できます。
STDMETHOD(GetIDsOfNames)(
REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgdispid);
解説
Windows SDK の IDispatch::GetIDsOfNames
を参照してください。
IDispEventImpl::GetTypeInfo
オブジェクトの型情報を取得します。この型情報を使用して、インターフェイスの型情報を取得できます。
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
IDispEventImpl::GetTypeInfoCount
オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
解説
Windows SDK の IDispatch::GetTypeInfoCount
を参照してください。
IDispEventImpl::GetUserDefinedType
ユーザー定義型の基本型を取得します。
VARTYPE GetUserDefinedType(
ITypeInfo* pTI,
HREFTYPE hrt);
パラメーター
pTI
[in]ユーザー定義型を含む ITypeInfo
インターフェイスへのポインター。
hrt
[入力] 取得される型の説明へのハンドル。
戻り値
バリアントの型。
解説
ITypeInfo::GetRefTypeInfo
を参照してください。
IDispEventImpl::IDispEventImpl
コンストラクター。 クラス テンプレート パラメーターの plibid
、 pdiid
、 wMajor
、および wMinor
の値を格納します。
IDispEventImpl();
IDispEventImpl::_tihclass
この typedef は、クラス テンプレート パラメーター tihclass
のインスタンスです。
typedef tihclass _tihclass;
解説
既定では、クラスは CComTypeInfoHolder
です。
CComTypeInfoHolder
により、クラスの型情報が管理されます。
関連項目
_ATL_FUNC_INFO
構造体
IDispatchImpl
クラス
IDispEventSimpleImpl
クラス
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
クラスの概要