Compartir a través de


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.

Consulte también

Macros
Funciones globales de control compuesto