Resumo de manipulação de eventos do ATL
Em geral, a manipulação de eventos do COM é um processo relativamente simples.Há três etapas principais:
Implemente a interface de evento em seu objeto.
Informe fonte do evento que o objeto deseja receber eventos.
Unadvise fonte do evento quando o seu objeto não mais precisa receber eventos.
Implementando a interface
Existem quatro maneiras principais de implementação de uma interface usando ATL.
Derivar de |
Adequado para o tipo de interface |
Exige que você implemente todos os métodos * |
Requer uma biblioteca de tipos em time de execução |
---|---|---|---|
A interface |
TabelaV |
Sim |
Não |
Dual |
Sim |
Sim |
|
Dispinterface |
Não |
Sim |
|
Dispinterface |
Não |
Não |
* Quando usar classes de suporte ATL, você nunca é necessários para implementar o IUnknown or IDispatch métodos manualmente.
Avisando e Unadvising fonte do evento
Há três maneiras principais de aconselhar e unadvising uma fonte do evento usando ATL.
Avisar sobre a função |
Função Unadvise |
Mais adequado para uso com |
Requer que você manter o controle de um cookie? |
Comentários |
---|---|---|---|---|
TabelaV ou interfaces duplos |
Sim |
AtlAdvise é uma função global do ATL. CComPtrBase::Advise é usado por CComPtr and CComQIPtr. |
||
Não |
Parâmetros de menos de AtlAdvise desde que a classe base não mais de trabalho. |
|||
Controles de composição de controles ActiveX |
Não |
CComCompositeControl::AdviseSinkMap aconselha que todas as entradas além de eventos de coletor de MAP. A mesma função unadvises as entradas.Este método é chamado automaticamente pelo CComCompositeControl classe. |
||
Controles ActiveX em uma caixa de diálogo |
Não |
CAxDialogImpl::AdviseSinkMap aconselha e unadvises todos os controles ActiveX no recurso de caixa de diálogo. Isso é concluído automaticamente para você. |