复合控件宏

这些宏定义事件接收器映射和条目。

说明
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)

参数

_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 是 Windows CE 中支持的 _ATL_FUNC_INFO 结构 CALLCONV 字段的唯一选项。 任何其他值都不受支持,因此其行为未定义。

备注

前四个宏参数与 SINK_ENTRY_EX 宏的参数相同。 最后一个参数提供事件的类型信息。 ActiveX 事件接收器的 CE ATL 实现仅支持从事件处理程序方法返回 HRESULT 或 void 类型的返回值。 任何其他返回值都不受支持,其行为未定义。

另请参阅


复合控件全局函数