IDispatchImpl クラス
デュアル インターフェイスの IDispatch
部分の既定の実装を提供します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
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
[in] デュアル インターフェイス。
piid
[in] T の IID へのポインター。
plibid
[in] インターフェイスに関する情報が含まれているタイプ ライブラリの LIBID へのポインター。 既定では、サーバーレベルのタイプ ライブラリが渡されます。
wMajor
[in] タイプ ライブラリのメジャー バージョン。 既定では、この値は 1 です。
wMinor
[in] タイプ ライブラリのマイナー バージョン。 既定値は 0 です。
tihclass
[in] T の型情報を管理するために使用されるクラス。既定値は CComTypeInfoHolder
です。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
IDispatchImpl::IDispatchImpl | コンストラクター。 デュアル インターフェイスの型情報を管理する保護されたメンバー変数に対して、AddRef を呼び出します。 このデストラクターは Release を呼び出します。 |
パブリック メソッド
名前 | 説明 |
---|---|
IDispatchImpl::GetIDsOfNames | 一連の名前を対応する一連のディスパッチ識別子に割り当てます。 |
IDispatchImpl::GetTypeInfo | デュアル インターフェイスの型情報を取得します。 |
IDispatchImpl::GetTypeInfoCount | デュアル インターフェイス用に使用できる型情報があるかどうかを判断します。 |
IDispatchImpl::Invoke | デュアル インターフェイスによって公開されるメソッドとプロパティへのアクセスを提供します。 |
解説
IDispatchImpl
では、オブジェクトに対するデュアル インターフェイスの IDispatch
部分の既定の実装が提供されます。 デュアル インターフェイスは IDispatch
から派生し、オートメーション互換の型のみが使われます。 デュアル インターフェイスでは、dispinterface と同様に、事前バインディングと遅延バインディングがサポートされます。ただし、デュアル インターフェイスでは 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 つだけ使用します。
継承階層
T
IDispatchImpl
要件
ヘッダー: atlcom.h
IDispatchImpl::GetIDsOfNames
一連の名前を対応する一連のディスパッチ識別子に割り当てます。
STDMETHOD(GetIDsOfNames)(
REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgdispid);
解説
Windows SDK の IDispatch::GetIDsOfNames に関する記事を参照してください。
IDispatchImpl::GetTypeInfo
デュアル インターフェイスの型情報を取得します。
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
解説
Windows SDK の IDispatch::GetTypeInfo に関する記事を参照してください。
IDispatchImpl::GetTypeInfoCount
デュアル インターフェイス用に使用できる型情報があるかどうかを判断します。
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
解説
Windows SDK の IDispatch::GetTypeInfoCount
に関するページを参照してください。
IDispatchImpl::IDispatchImpl
コンストラクター。 デュアル インターフェイスの型情報を管理する保護されたメンバー変数に対して、AddRef
を呼び出します。 このデストラクターは Release
を呼び出します。
IDispatchImpl();
IDispatchImpl::Invoke
デュアル インターフェイスによって公開されるメソッドとプロパティへのアクセスを提供します。
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* pexcepinfo,
UINT* puArgErr);
解説
Windows SDK の IDispatch::Invoke に関する記事を参照してください。