Compartir por


Controles ActiveX MFC: Agregar propiedades estándar

Las propiedades estándar difieren de las propiedades personalizadas en que ya están implementadas por la clase COleControl. COleControl contiene funciones miembro predefinidas que admiten propiedades comunes para el control. Algunas propiedades comunes incluyen el título del control y los colores de primer plano y de fondo. Para obtener información sobre otras propiedades estándar, vea Propiedades estándar admitidas por el Asistente para agregar propiedades más adelante en este artículo. Las entradas del mapa de distribución para las propiedades estándar siempre tienen el prefijo DISP_STOCKPROP.

En este artículo se describe cómo agregar una propiedad estándar (en este caso, Caption) a un control ActiveX mediante el Asistente para agregar propiedades y se explican las modificaciones de código resultantes. Contenido de los temas:

Uso del Asistente para agregar propiedades para agregar una propiedad estándar

Para agregar propiedades estándar se necesita menos código que para agregar propiedades personalizadas porque la compatibilidad con la propiedad se controla automáticamente mediante COleControl. En el procedimiento siguiente se muestra cómo agregar la propiedad Caption estándar a un marco de control ActiveX estándar y también se puede usar para agregar otras propiedades estándar. Sustituya el nombre de la propiedad estándar seleccionada por Caption.

Para agregar la propiedad estándar Caption mediante el Asistente para agregar propiedades

  1. Cargue el proyecto del control.

  2. En la vista de clases, expanda el nodo de biblioteca del control.

  3. Haga clic con el botón derecho en el nodo de interfaz del control (el segundo nodo del nodo de biblioteca) para abrir el menú contextual.

  4. En el menú contextual, haga clic en Agregar y después en Agregar propiedad.

    Se abrirá el Asistente para agregar propiedades.

  5. En el cuadro Nombre de propiedad, haga clic en Caption (Título).

  6. Haga clic en Finalizar

Cambios del Asistente para agregar propiedades para las propiedades estándar

Como COleControl admite propiedades estándar, el Asistente para agregar propiedades no cambia la declaración de clase de ninguna manera; agrega la propiedad al mapa de distribución. El Asistente para agregar propiedades agrega la siguiente línea al mapa de distribución del control, que se encuentra en el archivo de implementación (.CPP):

DISP_STOCKPROP_CAPTION()

La siguiente línea se agrega al archivo de descripción de la interfaz (.IDL) del control:

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

Esta línea asigna a la propiedad Caption un identificador específico. Observe que la propiedad es enlazable y solicitará permiso a la base de datos antes de modificar el valor.

Esto hace que la propiedad Caption esté disponible para los usuarios del control. Para usar el valor de una propiedad estándar, acceda a una variable miembro o función miembro de la clase base COleControl. Para más información sobre estas variables miembro y funciones miembro, vea la sección siguiente, Propiedades estándar admitidas por el Asistente para agregar propiedades.

Propiedades estándar admitidas por el Asistente para agregar propiedades

La clase COleControl proporciona nueve propiedades estándar. Puede agregar las propiedades que quiera mediante el Asistente para agregar propiedades.

Propiedad Entrada del mapa de distribución Procedimiento ara acceder a un valor
Appearance DISP_STOCKPROP_APPEARANCE( ) Valor accesible como m_sAppearance.
BackColor DISP_STOCKPROP_BACKCOLOR( ) Valor accesible mediante una llamada a GetBackColor.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) Valor accesible como m_sBorderStyle.
Caption DISP_STOCKPROP_CAPTION( ) Valor accesible mediante una llamada a InternalGetText.
Enabled DISP_STOCKPROP_ENABLED( ) Valor accesible como m_bEnabled.
Font DISP_STOCKPROP_FONT( ) Vea el artículo Controles ActiveX MFC: Uso de fuentes para obtener información sobre el uso.
ForeColor DISP_STOCKPROP_FORECOLOR( ) Valor accesible mediante una llamada a GetForeColor.
hWnd DISP_STOCKPROP_HWND( ) Valor accesible como m_hWnd.
Text DISP_STOCKPROP_TEXT( ) Valor accesible mediante una llamada a InternalGetText. Esta propiedad es la misma que Caption, excepto en el nombre de propiedad.
ReadyState DISP_STOCKPROP_READYSTATE() Valor accesible como m_lReadyState o GetReadyState

Notificación y propiedades estándar

La mayoría de las propiedades estándar tienen funciones de notificación que se pueden invalidar. Por ejemplo, cada vez que se cambia la propiedad BackColor, se llama a la función OnBackColorChanged (una función miembro de la clase de control). La implementación predeterminada (en COleControl) llama a InvalidateControl. Invalide esta función si quiere realizar acciones adicionales en respuesta a esta situación.

Propiedades de color

Al pintar el control puede usar las propiedades estándar ForeColor y BackColor, o bien propiedades de color personalizadas propias. Para usar una propiedad de color, llame a la función miembro COleControl::TranslateColor. Los parámetros de esta función son el valor de la propiedad de color y un identificador de paleta opcional. El valor devuelto es un valor COLORREF que se puede pasar a funciones GDI, como SetTextColor y CreateSolidBrush.

Para acceder a los valores de color de las propiedades estándar ForeColor y BackColor se llama a GetForeColor o a la función GetBackColor, respectivamente.

En el ejemplo siguiente se muestra cómo usar estas dos propiedades de color al pintar un control. Inicializa una variable COLORREF temporal y un objeto CBrush con llamadas a TranslateColor: una mediante la propiedad ForeColor y otra con la propiedad BackColor. Después, se usa un objeto CBrush temporal para pintar el rectángulo del control y el color del texto se establece mediante la propiedad ForeColor.

CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

Consulte también

Controles ActiveX de MFC
Controles ActiveX MFC: Propiedades
Controles ActiveX MFC: Métodos
COleControl (clase)