Macros de control compuesto
Estas macros definen las entradas y las asignaciones del receptor de eventos.
Macro | Descripción |
---|---|
BEGIN_SINK_MAP | Marca el principio de la asignación del receptor de eventos para el control compuesto. |
END_SINK_MAP | Marca el final de la asignación del receptor de eventos para el control compuesto. |
SINK_ENTRY | Entrada a la asignación del receptor de eventos. |
SINK_ENTRY_EX | Entrada a la asignación del receptor de eventos con un parámetro adicional. |
SINK_ENTRY_EX_P | (Visual Studio 2017) De forma similar a SINK_ENTRY_EX, salvo que se toma un puntero a iid. |
SINK_ENTRY_INFO | Entrada a la asignación del receptor de eventos con información de tipo proporcionada manualmente para su uso con IDispEventSimpleImpl. |
SINK_ENTRY_INFO_P | (Visual Studio 2017) Similar a SINK_ENTRY_INFO excepto que toma un puntero a iid. |
Requisitos
Encabezado: atlcom.h
BEGIN_SINK_MAP
Declara el principio a la asignación del receptor de eventos para el control compuesto.
BEGIN_SINK_MAP(_class)
Parámetros
_class
[in] Especifica el control.
Ejemplo
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()
Comentarios
La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos. Cualquier otro valor devuelto no es compatible y su comportamiento no está definido.
END_SINK_MAP
Declara el final de la asignación de eventos para el control compuesto.
END_SINK_MAP()
Ejemplo
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()
Comentarios
La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos. Cualquier otro valor devuelto no es compatible y su comportamiento no está definido.
SINK_ENTRY
Declara la función de controlador (fn) para el evento especificado (despid) del control identificado por id.
SINK_ENTRY( id, dispid, fn )
Parámetros
id
[in] Identifica el control.
dispid
[in] Identifica el evento especificado.
fn
[in] Nombre de la función del controlador de eventos. Esta función debe usar la convención de llamada _stdcall
y tener la firma de estilo dispinterface adecuada.
Ejemplo
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()
Comentarios
La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos. Cualquier otro valor devuelto no es compatible y su comportamiento no está definido.
SINK_ENTRY_EX y SINK_ENTRY_EX_P
Declara la función de controlador (fn) para el evento especificado (despid), de la interfaz de envío (iid), para el control identificado por id.
SINK_ENTRY_EX( id, iid, dispid, fn )
SINK_ENTRY_EX_P( id, piid, dispid, fn ) // (Visual Studio 2017)
Parámetros
id
[in] Identifica el control.
iid
[in] Identifica la interfaz de envío.
piid
[in] Puntero a la interfaz de envío.
dispid
[in] Identifica el evento especificado.
fn
[in] Nombre de la función del controlador de eventos. Esta función debe usar la convención de llamada _stdcall
y tener la firma de estilo dispinterface adecuada.
Ejemplo
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()
Comentarios
La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos. Cualquier otro valor devuelto no es compatible y su comportamiento no está definido.
SINK_ENTRY_INFO y SINK_ENTRY_INFO_P
Use la macro SINK_ENTRY_INFO dentro de una asignación del receptor de eventos para proporcionar la información necesaria por IDispEventSimpleImpl para enrutar los eventos a la función de controlador correspondiente.
SINK_ENTRY_INFO( id, iid, dispid, fn, info )
SINK_ENTRY_INFO_P( id, piid, dispid, fn, info ) // (Visual Studio 2017)
Parámetros
id
[in] Entero sin signo que identifica el origen del evento. Este valor debe coincidir con el parámetro de plantilla nID usado en la clase base IDispEventSimpleImpl relacionada.
iid
[in] IID que identifica la interfaz de envío.
piid
[in] Puntero a IID que identifica la interfaz de envío.
dispid
[in] DISPID que identifica el evento especificado.
fn
[in] Nombre de la función del controlador de eventos. Esta función debe usar la convención de llamada _stdcall
y tener la firma de estilo dispinterface adecuada.
info
[in] Información de tipo para la función de controlador de eventos. Esta información de tipo se proporciona en forma de puntero a una estructura _ATL_FUNC_INFO
. CC_CDECL es la única opción admitida en Windows CE para el campo CALLCONV de la estructura _ATL_FUNC_INFO
. Cualquier otro valor no se admite, por lo tanto, su comportamiento no está definido.
Comentarios
Los cuatro primeros parámetros de macro son los mismos que los de la macro SINK_ENTRY_EX. El parámetro final proporciona información de tipo para el evento. La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos. Cualquier otro valor devuelto no es compatible y su comportamiento no está definido.