Partilhar via


Macros de Controlo Composto

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Estes macros definem mapas de sumidouro de eventos e entradas.

Macro Description
BEGIN_SINK_MAP Marca o início do event sink map para o controlo composto.
END_SINK_MAP Marca o fim do mapa de sumidouro de eventos para o controlo composto.
SINK_ENTRY Entrada no mapa do sumidouro de eventos.
SINK_ENTRY_EX Entrada no mapa de afundamento de eventos com um parâmetro extra.
SINK_ENTRY_EX_P (Visual Studio 2017) Semelhante ao SINK_ENTRY_EX, exceto que aceita um ponteiro para o iid.
SINK_ENTRY_INFO Entrada no event sink map com informação de tipo fornecida manualmente para uso com IDispEventSimpleImpl.
SINK_ENTRY_INFO_P (Visual Studio 2017) Semelhante ao SINK_ENTRY_INFO exceto que aceita um ponteiro para o iID.

Requerimentos

Cabeçalho: atlcom.h

BEGIN_SINK_MAP

Declara o início do event sink map para o controlo composto.

BEGIN_SINK_MAP(_class)

Parâmetros

_class
[dentro] Especifica o controlo.

Example

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()

Observações

A implementação CE ATL dos sinks de eventos ActiveX apenas suporta valores de retorno do tipo HRESULT ou void dos seus métodos do handler de eventos. Qualquer outro valor de retorno não é suportado e o seu comportamento é indefinido.

END_SINK_MAP

Declara o fim do mapa de sumidouro de eventos para o controlo composto.

END_SINK_MAP()

Example

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()

Observações

A implementação CE ATL dos sinks de eventos ActiveX apenas suporta valores de retorno do tipo HRESULT ou void dos seus métodos do handler de eventos. Qualquer outro valor de retorno não é suportado e o seu comportamento é indefinido.

SINK_ENTRY

Declara a função handler (fn) para o evento especificado (dispid) do controlo identificado por id.

SINK_ENTRY( id, dispid, fn )

Parâmetros

ID
[dentro] Identifica o controlo.

dispid
[dentro] Identifica o evento especificado.

fn
[dentro] Nome da função handler de eventos. Esta função deve usar a _stdcall convenção de chamada e ter a assinatura de estilo disinterface apropriada.

Example

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()

Observações

A implementação CE ATL dos sinks de eventos ActiveX apenas suporta valores de retorno do tipo HRESULT ou void dos seus métodos do handler de eventos. Qualquer outro valor de retorno não é suportado e o seu comportamento é indefinido.

SINK_ENTRY_EX e SINK_ENTRY_EX_P

Declara a função handler (fn) para o evento especificado (dispid) da interface de despacho (iid), para o controlo identificado por id.

SINK_ENTRY_EX( id, iid, dispid, fn )
SINK_ENTRY_EX_P( id, piid, dispid, fn ) // (Visual Studio 2017)

Parâmetros

ID
[dentro] Identifica o controlo.

IID
[dentro] Identifica a interface de despacho.

Piid
[dentro] Apontar para a interface de despacho.

dispid
[dentro] Identifica o evento especificado.

fn
[dentro] Nome da função handler de eventos. Esta função deve usar a _stdcall convenção de chamada e ter a assinatura de estilo disinterface apropriada.

Example

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()

Observações

A implementação CE ATL dos sinks de eventos ActiveX apenas suporta valores de retorno do tipo HRESULT ou void dos seus métodos do handler de eventos. Qualquer outro valor de retorno não é suportado e o seu comportamento é indefinido.

SINK_ENTRY_INFO e SINK_ENTRY_INFO_P

Use a macro SINK_ENTRY_INFO dentro de um event sink map para fornecer a informação necessária ao IDispEventSimpleImpl para encaminhar eventos para a função handler relevante.

SINK_ENTRY_INFO( id, iid, dispid, fn, info )
SINK_ENTRY_INFO_P( id, piid, dispid, fn, info ) // (Visual Studio 2017)

Parâmetros

ID
[dentro] Inteiro sem sinal que identifica a fonte do evento. Este valor deve corresponder ao parâmetro do modelo nID usado na classe base relacionada IDispEventSimpleImpl .

IID
[dentro] IID que identifica a interface de despacho.

Piid
[dentro] Apontador para o IID que identifica a interface de despacho.

dispid
[dentro] DISPID identificando o evento especificado.

fn
[dentro] Nome da função handler de eventos. Esta função deve usar a _stdcall convenção de chamada e ter a assinatura de estilo disinterface apropriada.

informação
[dentro] Informação de tipo para a função de gestor de eventos. Esta informação de tipo é fornecida sob a forma de um ponteiro para uma _ATL_FUNC_INFO estrutura. CC_CDECL é a única opção suportada no Windows CE para o campo CALLCONV da _ATL_FUNC_INFO estrutura. Qualquer outro valor não é suportado, pelo que o seu comportamento é indefinido.

Observações

Os primeiros quatro parâmetros de macro são os mesmos que os da macro SINK_ENTRY_EX . O parâmetro final fornece informação sobre o tipo do evento. A implementação CE ATL dos sinks de eventos ActiveX apenas suporta valores de retorno do tipo HRESULT ou void dos seus métodos do handler de eventos. Qualquer outro valor de retorno não é suportado e o seu comportamento é indefinido.

Consulte também

Macros
Funções globais de controle composto