Implementando a interface de manipulação de eventos
ATL ajuda você com todos os três elementos necessários: manipulando eventos implementando a interface de evento, recomendando a fonte do evento, e unadvising a fonte do evento.As etapas que precisas você precisará ter dependem do tipo da interface de evento e dos requisitos de desempenho de seu aplicativo.
As maneiras mais comuns de implementar uma interface que usa ATL são:
Derivando de uma interface diretamente.
Derivando de IDispatchImpl para as interfaces duais descritas em uma biblioteca de tipo.
Derivando de IDispEventImpl para os dispinterfaces descritos em uma biblioteca de tipo.
Derivando de IDispEventSimpleImpl para os dispinterfaces não descritos em uma biblioteca de tipo ou quando você deseja melhorar a eficiência não carregar informações tipo em tempo de execução.
Se você estiver implementando uma interface ou dupla, você deve recomendar a fonte do evento chamando AtlAdvise ou CComPtrBase::Advise.Você precisará manter controle do cookie retornada pela chamada você mesmo.Chamada AtlUnadvise para interromper a conexão.
Se você estiver implementando um dispinterface usando IDispEventImpl ou IDispEventSimpleImpl, você deve recomendar a fonte do evento chamando IDispEventSimpleImpl::DispEventAdvise.Chamada IDispEventSimpleImpl::DispEventUnadvise para interromper a conexão.
Se você estiver usando IDispEventImpl como uma classe base de um controle composto, fontes de eventos listadas no mapa do coletor serão recomendadas e CComCompositeControl::AdviseSinkMapautomaticamente uso de irracional.
As classes de IDispEventImpl e de IDispEventSimpleImpl gerenciam o cookie para você.