複合コントロールに関するマクロ
これらのマクロは、イベント シンクのマップとエントリを定義します。
マクロ | 説明 |
---|---|
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 型の戻り値のみがサポートされます。 その他の戻り値はサポートされておらず、動作は未定義です。