Compartilhar via


Como implementar a interface de manipulação de eventos

A ATL ajuda você com todos os três elementos necessários para lidar com eventos: implementar a interface do evento, consultar a origem do evento e não consultar a origem do evento. As etapas exatas que você precisará executar dependem do tipo da interface do evento e dos requisitos de desempenho do aplicativo.

As maneiras mais comuns de implementar uma interface usando a ATL são:

  • Derivando de uma interface personalizada diretamente.

  • Derivando de IDispatchImpl para interfaces duplas descritas em uma biblioteca de tipos.

  • Derivando de IDispEventImpl para dispinterfaces descritas em uma biblioteca de tipos.

  • Derivando de IDispEventSimpleImpl para dispinterfaces não descritas em uma biblioteca de tipos ou quando você deseja melhorar a eficiência não carregando as informações de tipo em tempo de execução.

Se você estiver implementando uma interface personalizada ou dupla, deverá consultar a origem do evento chamando AtlAdvise ou CComPtrBase::Advise. Você precisará acompanhar o cookie retornado pela chamada por conta própria. Chame AtlUnadvise para interromper a conexão.

Se você estiver implementando uma dispinterface usando IDispEventImpl ou IDispEventSimpleImpl, deverá consultar a origem do evento chamando IDispEventSimpleImpl::DispEventAdvise. Chame IDispEventSimpleImpl::DispEventUnadvise para interromper a conexão.

Se você estiver usando IDispEventImpl como uma classe base de um controle composto, as fontes de eventos listadas no mapa do coletor serão consultadas e não consultadas automaticamente usando CComCompositeControl::AdviseSinkMap.

IDispEventImpl e IDispEventSimpleImpl gerenciam o cookie para você.

Confira também

Manipulação de eventos