Compartir por


Controls ActiveX MFC: Acceso a las propiedades de ambiente

En este artículo se describe cómo un control ActiveX puede acceder a las propiedades de ambiente de su contenedor de controles.

Un control puede obtener información sobre su contenedor accediendo a las propiedades de ambiente del contenedor. Estas propiedades exponen las características visuales, como el color de fondo del contenedor, la fuente actual usada por el contenedor y las características operativas, como si el contenedor está actualmente en modo de usuario o en modo de diseñador. Un control puede usar propiedades de ambiente para adaptar su apariencia y comportamiento al contenedor en particular en el que está insertado. Sin embargo, un control nunca debe suponer que su contenedor admitirá alguna propiedad de ambiente en particular. De hecho, es posible que algunos contenedores no admitan ninguna propiedad de ambiente. En ausencia de una propiedad de ambiente, un control debe adoptar un valor predeterminado razonable.

Para acceder a una propiedad de ambiente, realice una llamada a COleControl::GetAmbientProperty. Esta función espera el id. de envío de la propiedad de ambiente como primer parámetro (el archivo OLECTL.H define los id. de envío para el conjunto estándar de propiedades de ambiente).

Los parámetros de la función GetAmbientProperty son el id. de envío, una etiqueta de variante que indica el tipo de propiedad esperada y un puntero a la memoria donde se debe devolver el valor. El tipo de datos al que hace referencia este puntero variará en función de la etiqueta de variante. La función devuelve TRUE si el contenedor admite la propiedad; de lo contrario, devuelve FALSE.

En el ejemplo de código siguiente se obtiene el valor de la propiedad de ambiente denominada "UserMode". Si el contenedor no admite la propiedad, se adopta un valor predeterminado de TRUE:

BOOL bUserMode;
if (!GetAmbientProperty(DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;

Para su comodidad, COleControl proporciona funciones auxiliares que acceden a muchas de las propiedades de ambiente que se usan habitualmente y devuelve los valores predeterminados adecuados cuando las propiedades no están disponibles. Estas funciones auxiliares son las siguientes:

Si el valor de una propiedad de ambiente cambia (a través de alguna acción del contenedor), se llama a la función miembro OnAmbientPropertyChanged del control. Invalide esta función miembro para controlar dicha notificación. El parámetro para OnAmbientPropertyChanged es el id. de envío de la propiedad de ambiente afectada. El valor de este id. de envío puede ser DISPID_UNKNOWN, que indica que una o varias propiedades de ambiente han cambiado, pero la información sobre qué propiedades se han visto afectadas no está disponible.

Consulte también

Controles ActiveX de MFC