次の方法で共有


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

参照

その他の技術情報

IDispatchImpl のメンバー

ATL クラスの概要