Compartir a través de


Resumen de control de eventos ATL

En general, el control de eventos COM es un proceso relativamente sencillo. Los pasos principales son tres:

  • Implementar la interfaz de eventos en el objeto.

  • Informar al origen del evento de que el objeto quiere recibir eventos.

  • Desviar el origen del evento cuando el objeto ya no necesite recibir eventos.

Implementación de la interfaz

Hay cuatro formas principales de implementar una interfaz mediante ATL.

Derivar de Adecuado para el tipo de interfaz Requiere que implemente todos los métodos* Requiere una biblioteca de tipos en tiempo de ejecución
La interfaz Tabla virtual No
IDispatchImpl Dual
IDispEventImpl Interfaz dispinterface No
IDispEventSimpleImpl Interfaz dispinterface No No

* Al usar clases de soporte ATL, nunca es necesario implementar manualmente los métodos IUnknown o IDispatch.

Asesoramiento y retirada del aviso del origen del evento

Hay tres formas principales de asesorar y desavisar un origen del evento mediante ATL.

Función Advise Función Unadvise Más adecuado para su uso con Requiere que realice seguimiento de una cookie Comentarios
AtlAdvise, CComPtrBase::Advise AtlUnadvise Interfaces duales o de tabla virtual AtlAdvise es una función ATL global. CComPtr y CComQIPtr usan CComPtrBase::Advise.
IDispEventSimpleImpl::DispEventAdvise IDispEventSimpleImpl::DispEventUnadvise IDispEventImpl o IDispEventSimpleImpl No Menos parámetros que AtlAdvise dado que la clase base funciona más.
CComCompositeControl::AdviseSinkMap(TRUE) CComCompositeControl::AdviseSinkMap(FALSE) Controles ActiveX en controles compuestos No CComCompositeControl::AdviseSinkMap notifica a todas las entradas del mapa del receptor de eventos. La misma función desavisó las entradas. La clase CComCompositeControl llama a este método de forma automática.
CAxDialogImpl::AdviseSinkMap(TRUE) CAxDialogImpl::AdviseSinkMap(FALSE) Controles ActiveX en un cuadro de diálogo No CAxDialogImpl::AdviseSinkMap notifica y desavisa a todos los controles ActiveX del recurso de diálogo. Eso se realiza de forma automática.

Consulte también

Control de eventos
Admitir IDispEventImpl