共用方式為


複合控制項巨集

這些宏會定義事件接收對應和專案。

Macro 描述
BEGIN_SINK_MAP 標記複合控制項的事件接收對應開頭。
END_SINK_MAP 標記複合控制項的事件接收對應結尾。
SINK_ENTRY 事件接收對應的專案。
SINK_ENTRY_EX 具有額外參數的事件接收對應專案。
SINK_ENTRY_EX_P (Visual Studio 2017)類似于SINK_ENTRY_EX,不同之處在于它會使用 iid 的指標。
SINK_ENTRY_INFO 事件接收對應的專案,其中包含手動提供的型別資訊,以搭配 IDispEventSimpleImpl 使用。
SINK_ENTRY_INFO_P (Visual Studio 2017)類似于SINK_ENTRY_INFO,不同之處在于它會使用 iid 的指標。

需求

標頭: atlcom.h

BEGIN_SINK_MAP

宣告複合控制項的事件接收對應開頭。

BEGIN_SINK_MAP(_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 所識別的控制項,宣告所指定事件 (dispid) 的處理常式函 式 ( dispid ), 表示分派介面 ( iid )。

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 樣式簽章。

資訊
[in]事件處理常式函式的類型資訊。 這個類型資訊是以結構的指標 _ATL_FUNC_INFO 形式提供。 CC_CDECL是結構之 CALLCONV 欄位 _ATL_FUNC_INFO 之 Windows CE 中唯一支援的選項。 不支援任何其他值,因此其行為未定義。

備註

前四個巨集引數與SINK_ENTRY_EX 宏的參數 相同。 最後一個參數會提供事件的類型資訊。 ActiveX 事件接收的 CE ATL 實作僅支援從事件處理常式方法傳回 HRESULT 或 void 類型的傳回值。 不支援任何其他傳回值,且其行為未定義。

另請參閱

巨集
複合控制項全域函式