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 へのポインター。 このインターフェイスは、plibidwMajor、および 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

IDispEventSimpleImpl

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

コンストラクター。 クラス テンプレート パラメーター plibidpdiidwMajor、および wMinor の値を格納します。

IDispEventImpl();

IDispEventImpl::tihclass

この typedef は、クラス テンプレート パラメーター tihclass のインスタンスです。

typedef tihclass _tihclass;

解説

既定では、クラスは CComTypeInfoHolder です。 CComTypeInfoHolder により、クラスの型情報が管理されます。

関連項目

_ATL_FUNC_INFO 構造体
IDispatchImpl クラス
IDispEventSimpleImpl クラス
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
クラスの概要