Macros de controle de composição
Essas macros definem mapas e entradas do coletor de eventos.
Macro | Descrição |
---|---|
BEGIN_SINK_MAP | Marca o início do mapa do coletor de eventos para o controle composto. |
END_SINK_MAP | Marca o final do mapa do coletor de eventos para o controle composto. |
SINK_ENTRY | Entrada no mapa do coletor de eventos. |
SINK_ENTRY_EX | Entrada no mapa do coletor de eventos com um parâmetro extra. |
SINK_ENTRY_EX_P | (Visual Studio 2017) Semelhante a SINK_ENTRY_EX exceto que é preciso um ponteiro para iid. |
SINK_ENTRY_INFO | Entrada no mapa do coletor de eventos com informações de tipo fornecidas manualmente para uso com IDispEventSimpleImpleImpl. |
SINK_ENTRY_INFO_P | (Visual Studio 2017) Semelhante a SINK_ENTRY_INFO exceto que é preciso um ponteiro para iid. |
Requisitos
Cabeçalho: atlcom.h
BEGIN_SINK_MAP
Declara o início do mapa do coletor de eventos para o controle composto.
BEGIN_SINK_MAP(_class)
Parâmetros
_class
[in] Especifica o controle.
Exemplo
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()
Comentários
A implementação da CE ATL de coletores de eventos ActiveX somente dá suporte a valores retornados do tipo HRESULT ou nulo de seus métodos de manipulador de eventos. Qualquer outro valor retornado não tem suporte e seu comportamento é indefinido.
END_SINK_MAP
Declara o final do mapa do coletor de eventos para o controle composto.
END_SINK_MAP()
Exemplo
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()
Comentários
A implementação da CE ATL de coletores de eventos ActiveX somente dá suporte a valores retornados do tipo HRESULT ou nulo de seus métodos de manipulador de eventos. Qualquer outro valor retornado não tem suporte e seu comportamento é indefinido.
SINK_ENTRY
Declara a função de manipulador (fn) para o evento especificado (dispid) do controle identificado pela id.
SINK_ENTRY( id, dispid, fn )
Parâmetros
id
[in] Identifica o controle.
dispid
[in] Identifica o evento especificado.
fn
[in] Nome da função de manipulador de eventos. Essa função deve usar a convenção de chamada _stdcall
e ter a assinatura apropriada no estilo dispinterface.
Exemplo
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()
Comentários
A implementação da CE ATL de coletores de eventos ActiveX somente dá suporte a valores retornados do tipo HRESULT ou nulo de seus métodos de manipulador de eventos. Qualquer outro valor retornado não tem suporte e seu comportamento é indefinido.
SINK_ENTRY_EX e SINK_ENTRY_EX_P
Declara a função de manipulador (fn) para o evento especificado (dispid) da interface de expedição (iid) para o controle 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 o controle.
iid
[in] Identifica a interface de expedição.
piid
[in] Ponteiro para a interface de expedição.
dispid
[in] Identifica o evento especificado.
fn
[in] Nome da função de manipulador de eventos. Essa função deve usar a convenção de chamada _stdcall
e ter a assinatura apropriada no estilo dispinterface.
Exemplo
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()
Comentários
A implementação da CE ATL de coletores de eventos ActiveX somente dá suporte a valores retornados do tipo HRESULT ou nulo de seus métodos de manipulador de eventos. Qualquer outro valor retornado não tem suporte e seu comportamento é indefinido.
SINK_ENTRY_INFO e SINK_ENTRY_INFO_P
Use a macro SINK_ENTRY_INFO dentro de um mapa do coletor de eventos para fornecer as informações necessárias por IDispEventSimpleImpl para rotear eventos para a função de manipulador relevante.
SINK_ENTRY_INFO( id, iid, dispid, fn, info )
SINK_ENTRY_INFO_P( id, piid, dispid, fn, info ) // (Visual Studio 2017)
Parâmetros
id
[in] Inteiro sem sinal que identifica a origem do evento. Esse valor deve corresponder ao parâmetro de modelo nID usado na classe base IDispEventSimpleImpl.
iid
[in] IID identifica a interface de expedição.
piid
[in] Ponteiro para IID que identifica a interface de expedição.
dispid
[in] DISPID que identifica o evento especificado.
fn
[in] Nome da função de manipulador de eventos. Essa função deve usar a convenção de chamada _stdcall
e ter a assinatura apropriada no estilo dispinterface.
info
[in] Digite as informações para a função do manipulador de eventos. Essas informações de tipo são fornecidas na forma de um ponteiro para uma estrutura _ATL_FUNC_INFO
. CC_CDECL é a única opção com suporte no Windows CE para o campo CALLCONV da estrutura _ATL_FUNC_INFO
. Qualquer outro valor não tem suporte, portanto, seu comportamento é indefinido.
Comentários
Os quatro primeiros parâmetros de macro são os mesmos da macro SINK_ENTRY_EX. O parâmetro final fornece informações de tipo para o evento. A implementação da CE ATL de coletores de eventos ActiveX somente dá suporte a valores retornados do tipo HRESULT ou nulo de seus métodos de manipulador de eventos. Qualquer outro valor retornado não tem suporte e seu comportamento é indefinido.