複合コントロールに関するマクロ

これらのマクロは、イベント シンクのマップとエントリを定義します。

マクロ 説明
BEGIN_SINK_MAP 複合コントロールのイベント シンク マップの先頭をマークします。
END_SINK_MAP 複合コントロールのイベント シンク マップの末尾をマークします。
SINK_ENTRY イベント シンク マップへのエントリ。
SINK_ENTRY_EX 追加のパラメーターを使用したイベント シンク マップへのエントリ。
SINK_ENTRY_EX_P (Visual Studio 2017) iid へのポインターを受け取る点を除き、SINK_ENTRY_EX と同様。
SINK_ENTRY_INFO IDispEventSimpleImpl で使用するために手動で指定した型情報を含む、イベント シンク マップへのエントリ。
SINK_ENTRY_INFO_P (Visual Studio 2017) iid へのポインターを受け取る点を除き、SINK_ENTRY_INFO と同様。

必要条件

ヘッダー: atlcom.h

BEGIN_SINK_MAP

複合コントロールのイベント シンク マップの先頭を宣言します。

BEGIN_SINK_MAP(_class)

パラメーター

_class
[in] コントロールを指定します。

BEGIN_SINK_MAP(CMyCompositeCtrl)
   //Make sure the Event Handlers have __stdcall calling convention
   SINK_ENTRY(IDC_CALENDAR1, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar1)
   SINK_ENTRY(IDC_CALENDAR2, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar2)
END_SINK_MAP()

解説

ActiveX イベント シンクの CE ATL 実装では、HRESULT 型またはイベント ハンドラー メソッドからの void 型の戻り値のみがサポートされます。 その他の戻り値はサポートされておらず、動作は未定義です。

END_SINK_MAP

複合コントロールのイベント シンク マップの末尾を宣言します。

END_SINK_MAP()

BEGIN_SINK_MAP(CMyCompositeCtrl)
   //Make sure the Event Handlers have __stdcall calling convention
   SINK_ENTRY(IDC_CALENDAR1, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar1)
   SINK_ENTRY(IDC_CALENDAR2, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar2)
END_SINK_MAP()

解説

ActiveX イベント シンクの CE ATL 実装では、HRESULT 型またはイベント ハンドラー メソッドからの void 型の戻り値のみがサポートされます。 その他の戻り値はサポートされておらず、動作は未定義です。

SINK_ENTRY

id によって識別されるコントロールの、指定したイベント (dispid) に対するハンドラー関数 (fn) を宣言します。

SINK_ENTRY( id, dispid, fn )

パラメーター

id
[in] コントロールを識別します。

dispid
[in] 指定したイベントを識別します。

fn
[in] イベント ハンドラー関数の名前。 この関数は、_stdcall 呼び出し規則を使用し、dispinterface スタイルの適切なシグネチャを持つ必要があります。

BEGIN_SINK_MAP(CMyCompositeCtrl)
   //Make sure the Event Handlers have __stdcall calling convention
   SINK_ENTRY(IDC_CALENDAR1, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar1)
   SINK_ENTRY(IDC_CALENDAR2, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar2)
END_SINK_MAP()

解説

ActiveX イベント シンクの CE ATL 実装では、HRESULT 型またはイベント ハンドラー メソッドからの void 型の戻り値のみがサポートされます。 その他の戻り値はサポートされておらず、動作は未定義です。

SINK_ENTRY_EX と SINK_ENTRY_EX_P

id によって識別されるコントロールについて、ディスパッチ インターフェイス (iid) の、指定したイベント (dispid) に対するハンドラー関数 (fn) を宣言します。

SINK_ENTRY_EX( id, iid, dispid, fn )
SINK_ENTRY_EX_P( id, piid, dispid, fn ) // (Visual Studio 2017)

パラメーター

id
[in] コントロールを識別します。

iid
[in] ディスパッチ インターフェイスを識別します。

piid
[in] ディスパッチ インターフェイスへのポインター。

dispid
[in] 指定したイベントを識別します。

fn
[in] イベント ハンドラー関数の名前。 この関数は、_stdcall 呼び出し規則を使用し、dispinterface スタイルの適切なシグネチャを持つ必要があります。

BEGIN_SINK_MAP(CMyCompositCtrl2)
   //Make sure the Event Handlers have __stdcall calling convention
   SINK_ENTRY_EX(IDC_CALENDAR1, __uuidof(DCalendarEvents), DISPID_CLICK, 
      &CMyCompositCtrl2::ClickCalendar1)
   SINK_ENTRY_EX(IDC_CALENDAR2, __uuidof(DCalendarEvents), DISPID_CLICK, 
      &CMyCompositCtrl2::ClickCalendar2)
END_SINK_MAP()

解説

ActiveX イベント シンクの CE ATL 実装では、HRESULT 型またはイベント ハンドラー メソッドからの void 型の戻り値のみがサポートされます。 その他の戻り値はサポートされておらず、動作は未定義です。

SINK_ENTRY_INFO と SINK_ENTRY_INFO_P

イベント シンク マップ内で SINK_ENTRY_INFO マクロを使用して、関連するハンドラー関数にイベントをルーティングするために IDispEventSimpleImpl で必要になる情報を提供します。

SINK_ENTRY_INFO( id, iid, dispid, fn, info )
SINK_ENTRY_INFO_P( id, piid, dispid, fn, info ) // (Visual Studio 2017)

パラメーター

id
[in] イベント ソースを識別する符号なし整数。 この値は、関連する IDispEventSimpleImpl 基底クラスで使用される nID テンプレート パラメーターと一致する必要があります。

iid
[in] ディスパッチ インターフェイスを識別する IID。

piid
[in] ディスパッチ インターフェイスを識別する IID へのポインター。

dispid
[in] 指定したイベントを識別する DISPID。

fn
[in] イベント ハンドラー関数の名前。 この関数は、_stdcall 呼び出し規則を使用し、dispinterface スタイルの適切なシグネチャを持つ必要があります。

info
[in] イベント ハンドラー関数の型情報。 この型情報は、_ATL_FUNC_INFO 構造体へのポインターという形式で提供されます。 CC_CDECL は、_ATL_FUNC_INFO 構造体の CALLCONV フィールドに対して Windows CE でサポートされる、唯一のオプションです。 その他の値はサポートされていないため、動作は未定義です。

解説

最初の 4 つのマクロ パラメーターは、SINK_ENTRY_EX マクロのパラメーターと同じです。 最後のパラメーターは、イベントの型情報を提供します。 ActiveX イベント シンクの CE ATL 実装では、HRESULT 型またはイベント ハンドラー メソッドからの void 型の戻り値のみがサポートされます。 その他の戻り値はサポートされておらず、動作は未定義です。

関連項目

マクロ
複合コントロールに関するグローバル関数