次の方法で共有


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 に関する記事を参照してください。

関連項目

クラスの概要