共用方式為


複合控制項巨集

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

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 類型的傳回值。 不支援任何其他傳回值,且其行為未定義。

另請參閱

巨集
複合控制項全域函式