IDispEventImpl クラス
このクラスでは 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 | 単一のメンバーと省略可能な引数名のセットを、対応する整数 DISPID のセットにマップします。 |
IDispEventImpl::GetTypeInfo | オブジェクトの型情報を取得します。 |
IDispEventImpl::GetTypeInfoCount | 型情報インターフェイスの数を取得します。 |
IDispEventImpl::GetUserDefinedType | ユーザー定義型の基本型を取得します。 |
解説
IDispEventImpl
では、インターフェイスのすべてのメソッドまたはイベントに対して実装コードを指定することなく、イベント ディスパッチ インターフェイスを実装する方法が提供されます。 IDispEventImpl
では、IDispatch
メソッドの実装が提供されます。 必要なのは、処理に関心があるイベントの実装を指定することだけです。
IDispEventImpl
は、クラスのイベント シンク マップと連携して、適切なハンドラー関数にイベントをルーティングします。 このクラスを使用するには、次のようにします。
処理する各オブジェクトの各イベントについて、イベント シンク マップに SINK_ENTRY または SINK_ENTRY_EX マクロを追加します。 複合コントロールの基本クラスとして IDispEventImpl
を使用する場合は、AtlAdviseSinkMap を呼び出して、イベント シンク マップ内のすべてのエントリのイベント ソースとの接続を確立および切断できます。 それ以外の場合、またはより詳細な制御を行う場合は、DispEventAdvise を呼び出して、ソース オブジェクトと基本クラスの間の接続を確立します。 接続を解除するには、DispEventUnadvise を呼び出します。
イベントを処理する必要があるオブジェクトごとに、(nID に一意の値を使用して) IDispEventImpl
から派生する必要があります。 1 つのソース オブジェクトに対してアドバイズ解除してから、別のソース オブジェクトに対してアドバイズすることで基底クラスを再利用できます。しかし、一度に 1 つのオブジェクトで処理できるソース オブジェクトの最大数は、IDispEventImpl
基底クラスの数によって制限されます。
IDispEventImpl
では IDispEventSimpleImpl と同じ機能が提供されます。ただし、インターフェイスに関するタイプ情報は、_ATL_FUNC_INFO 構造体へのポインターとして提供されるのではなく、タイプ ライブラリから取得されます。 イベント インターフェイスを記述するタイプ ライブラリがない場合、またはタイプ ライブラリの使用に関連するオーバーヘッドを回避する場合は、IDispEventSimpleImpl
を使用します。
Note
IDispEventImpl
および IDispEventSimpleImpl
では、各 IDispEventImpl
および IDispEventSimpleImpl
基本クラスが個別の COM ID として機能できるようにしながら、メイン COM オブジェクトのクラス メンバーに引き続き直接アクセスできるようにすることで、独自の IUnknown::QueryInterface
の実装を提供します。
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
単一のメンバーと省略可能な引数名のセットを、対応する整数 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
[入力] ユーザー定義型を含む 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
クラスの概要