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ê.