Resumo de manipulação de eventos de ATL
Em geral, manipular eventos COM é um processo relativamente simples.Há três etapas principais:
Implementar a interface de evento no seu objeto.
Seja recomendável a fonte do evento que seu objeto deseja receber eventos.
Unadvise a fonte de evento quando seu objeto não precise receber eventos.
Implementando a interface
Há quatro maneiras principais de implementar uma interface usando ATL.
Derive de |
Apropriado para o tipo de interface |
Requer que você implementar qualquer methods* |
Requer uma biblioteca de tipo em tempo de execução |
---|---|---|---|
a interface |
Vtable |
Sim |
Não |
Double |
Sim |
Sim |
|
Dispinterface |
Não |
Sim |
|
Dispinterface |
Não |
Não |
* A o usar classes de suporte de ATL, você nunca é necessário implementar manualmente os métodos de IUnknown ou de IDispatch .
Conselhos Unadvising e a fonte de evento
Existem três maneiras principais de recomendar e de unadvising uma fonte de evento usando ATL.
A função seja recomendável |
Função de Unadvise |
O mais adequado para uso com |
Requer manter controle de um cookie? |
Comentários |
---|---|---|---|---|
Vtable ou interfaces duais |
Sim |
AtlAdvise é uma função global de ATL.CComPtrBase::Advise é usado por CComPtr e por CComQIPtr. |
||
Não |
Parâmetros de menos que AtlAdvise como a classe base faz mais trabalho. |
|||
Controles ActiveX em controles compostos |
Não |
CComCompositeControl::AdviseSinkMap recomendável todas as entradas no mapa do coletor de eventos.O mesmo unadvises de função as entradas.Este método é chamado automaticamente pela classe de CComCompositeControl . |
||
Controles ActiveX em uma caixa de diálogo |
Não |
CAxDialogImpl::AdviseSinkMap recomendável e unadvises todos os controles ActiveX no recurso da caixa de diálogo.Isso é feito automaticamente para você. |