Compartilhar via


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

IDispatchImpl

Double

Sim

Sim

IDispEventImpl

Dispinterface

Não

Sim

IDispEventSimpleImpl

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

AtlAdvise, CComPtrBase::Advise

AtlUnadvise

Vtable ou interfaces duais

Sim

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

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImpl ou IDispEventSimpleImpl

Não

Parâmetros de menos que AtlAdvise como a classe base faz mais trabalho.

CComCompositeControl::AdviseSinkMap (TRUE)

CComCompositeControl::AdviseSinkMap (FALSO)

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 .

CAxDialogImpl::AdviseSinkMap (TRUE)

CAxDialogImpl::AdviseSinkMap (FALSO)

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

Consulte também

Conceitos

Tratamento de evento e ATL

Suporte IDispEventImpl