IDispatchImpl クラス
デュアル インターフェイスの IDispatch 部分の既定の実装を提供します。
template<
class T,
const IID* piid= &__uuidof(T),
const GUID* plibid = &CAtlModule::m_libid,
WORD wMajor = 1,
WORD wMinor = 0,
class tihclass = CComTypeInfoHolder
>
class ATL_NO_VTABLE IDispatchImpl :
public T
パラメーター
[入力] T
デュアル インターフェイス。[入力] piid
T の IID へのポインター。[入力] plibid
インターフェイスに関する情報を保持するタイプ ライブラリの LIBID へのポインター。 既定では、サーバーレベルのタイプ ライブラリが渡されます。[入力] wMajor
タイプ ライブラリのメジャー バージョン。 既定値は 1 です。[入力] wMinor
タイプ ライブラリのマイナー バージョン。 既定値は 0 です。[入力] tihclass
T の型情報の管理に使用されるクラス。 既定では、値は CComTypeInfoHolder です。
解説
IDispatchImpl は、オブジェクトのデュアル インターフェイスの IDispatch 部分に対する既定の実装を提供します。 デュアル インターフェイスは、IDispatch から派生され、オートメーション互換型だけを使います。 ディスパッチ インターフェイスと同様に、デュアル インターフェイスでも事前バインディングと遅延バインディングがサポートされますが、デュアル インターフェイスでは vtable バインディングもサポートされます。
IDispatchImpl の一般的な実装例を次に示します。
class ATL_NO_VTABLE CBeeper :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CBeeper, &CLSID_Beeper>,
public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
既定では、IDispatchImpl クラスはレジストリから T の型情報を検索します。 登録されていないインターフェイスを実装する場合は、定義済みのバージョン番号を使用することで、レジストリにアクセスせずに IDispatchImpl クラスを使用できます。 wMajor の値が 0xFFFF で wMinor の値が 0xFFFF の IDispatchImpl オブジェクトを作成すると、IDispatchImpl クラスはレジストリではなく .dll ファイルからタイプ ライブラリを取得します。
IDispatchImpl は、デュアル インターフェイスのタイプ情報を管理する CComTypeInfoHolder 型の静的メンバーを保持します。 同一のデュアル インターフェイスを実装する複数のオブジェクトがある場合は、CComTypeInfoHolder の 1 つのインスタンスだけが使われます。
必要条件
**ヘッダー:**atlcom.h