Compartilhar via


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

IDispatchImpl

Dual

Sim

Sim

IDispEventImpl

Dispinterface

Não

Sim

IDispEventSimpleImpl

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

AtlAdvise, CComPtrBase::Advise

AtlUnadvise

TabelaV ou interfaces duplos

Sim

AtlAdvise é uma função global do ATL. CComPtrBase::Advise é usado por CComPtr and CComQIPtr.

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImpl or IDispEventSimpleImpl

Não

Parâmetros de menos de AtlAdvise desde que a classe base não mais de trabalho.

CComCompositeControl::AdviseSinkMap(TRUE)

CComCompositeControl::AdviseSinkMap(FALSE)

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.

CAxDialogImpl::AdviseSinkMap(TRUE)

CAxDialogImpl::AdviseSinkMap(FALSE)

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

Consulte também

Conceitos

Manipulação de evento e ATL

Suporte IDispEventImpl