Compartir a través de


Uso de la funcionalidad del contenedor

En las secciones anteriores se ha descrito parte de la compatibilidad necesaria del lado de llamada que debe tener un control ActiveX para tener acceso a determinadas características de su contenedor. En la tabla siguiente se describe el uso de un control de interfaces del lado contenedor y cuándo se produciría dicho uso.

Interfaz Container (objeto) Uso
IOleClientSite
Sitio
Los controles que implementan IOleObject llaman a métodos IOleClientSite como parte del protocolo de inserción OLE estándar, específicamente los métodos SaveObject, ShowObject, OnShowWindow (solo si se admite un estado de activación de ventana independiente), RequestNewObjectLayout y GetContainer (si se desea la comunicación con otros controles). El método GetMoniker solo se usa cuando el control se puede vincular externamente, es decir, el control no está marcado con OLEMISC_CANTLINKINSIDE.
IOleInPlaceSite
Sitio
Los controles que tienen una activación local y posiblemente un estado activo de la interfaz de usuario llamarán a métodos IOleInPlaceSite (generalmente todos ellos con la excepción de ContextSensitiveHelp) como parte del protocolo de activación ole en contexto estándar.
IAdviseSink
Sitio
El control llama a OnDataChange si el control admite IDataObject, OnViewChange si el control admite IViewObject2 y OnClose, OnSave y OnRename si el control admite IOleObject.
IOleControlSite
Sitio
Si se admite, el control llama a OnControlInfoChanged cuando cambian los mnemonics, LockInPlaceActive y TransformCoords si se desencadenan eventos (el último método solo se usa si las coordenadas se pasan como argumentos de evento), OnFocus y TranslateAccelerator si el control tiene un estado activo de la interfaz de usuario y GetExtendedControl si el control desea examinar las propiedades de control extendido (propiedad del contenedor).
IDispatch (propiedades ambientales)
Sitio
Se usa para acceder a las propiedades ambientales.
IPropertyNotifySink
Varía
Un control debe generar OnChanged y OnRequestEdit para las propiedades de control marcadas como [enlazables] y [request], respectivamente.
Otras interfaces de receptor de eventos
Varía
Un control que tenga interfaces salientes distintas de IPropertyNotifySink se entregarán otros punteros de interfaz del IID correcto a las implementaciones IConnectionPoint::Advise del control (que normalmente se encuentran en subobjetos del control). Un control siempre sabe cómo llamar a sus propias interfaces de eventos porque el control define esas interfaces.
IOleInPlaceFrame
Fotograma
Se usa cuando un control tiene un estado activo de interfaz de usuario local que requiere herramientas de nivel de marco o elementos de menú.
IOleInPlaceUIWindow
Documento
Se usa solo cuando un control tiene un estado activo de interfaz de usuario local que requiere herramientas de interfaz de usuario de nivel de documento o de panel. Este es poco habitual.

Controles