Controles ActiveX de MFC: Agregar propiedades estándar
Las propiedades comunes difieren de las propiedades personalizadas en que se implementan ya por la clase COleControl.COleControl contiene el miembro predefinido funciona que las propiedades comunes de compatibilidad para el control.Algunas propiedades comunes incluyen la leyenda del control y los colores de primer plano y de fondo.Para obtener información sobre otras propiedades comunes, vea Propiedades comunes admitidas por el asistente para agregar propiedades más adelante en este artículo.Las entradas del mapa de envío para las propiedades comunes son prefijadas siempre por DISP_STOCKPROP.
En este artículo se describe cómo agregar una propiedad común (en este caso, caption) a un control ActiveX mediante el asistente para agregar propiedades y explica las modificaciones resultantes de código.Entre los temas se incluyen los siguientes:
Mediante el asistente para agregar propiedades para agregar una propiedad común
Agregue los cambios del asistente de las propiedades comunes
Propiedades comunes admitidas por el asistente para agregar propiedades
Propiedades y notificación comunes
Propiedades de colores
[!NOTA]
Los controles personalizados de Visual Basic tienen normalmente propiedades como top, Left, el ancho, alto, clasificar, etiqueta, nombre, TabIndex, TabStop, y elemento primario.Contenedores de controles ActiveX, sin embargo, son responsables de implementar estas propiedades de control y por consiguiente los controles ActiveX no deben admitir estas propiedades.
Mediante el asistente para agregar propiedades para agregar una propiedad común
Agregar propiedades comunes requiere menos código que propiedades personalizadas de suma porque la compatibilidad para la propiedad se encargan automáticamente COleControl.El procedimiento siguiente muestra cómo agregar la propiedad caption común a un marco de control ActiveX y también se puede utilizar para agregar otras propiedades comunes.Sustituya el nombre de propiedad común seleccionado para la leyenda.
Para agregar la propiedad caption habituales mediante el asistente para agregar propiedades
Cargue el proyecto de control.
En la vista de clases, expanda el nodo de la biblioteca del control.
Haga clic con el botón secundario en el nodo de la interfaz para el control (el segundo nodo el nodo de biblioteca) para abrir el menú contextual.
En el menú contextual, haga clic agregar y haga clic en Agregar propiedad.
Esto abre Asistente para agregar propiedades.
En el cuadro de Property Name , haga clic en Caption.
Haga clic en Finalizar.
Agregue los cambios del asistente de las propiedades comunes
Dado que COleControl admite propiedades comunes, el asistente para agregar propiedades no cambia la declaración de clase de ninguna manera; agrega la propiedad a la asignación de envío.El asistente para agregar agrega la línea siguiente al mapa de envío 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 de control (.IDL):
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Esta línea asigna a propiedad caption un identificador específicaObserve que la propiedad es enlazable y solicitará el permiso de base de datos antes de modificar el valor.
Esto hace que la propiedad caption a disposición de los usuarios del control.Para utilizar el valor de una propiedad común, tenga acceso a una función de variable miembro o miembro de la clase base de COleControl .Para obtener más información sobre estas variables miembro y funciones miembro, vea la siguiente sección, propiedades comunes admitidas por el asistente para agregar propiedades.
Propiedades comunes admitidas por el asistente para agregar propiedades
La clase de COleControl proporciona nueve propiedades comunes.Puede agregar propiedades que desee mediante el asistente para agregar propiedades.
Propiedad. |
Entrada de asignación de envío |
Cómo tener acceso al valor |
---|---|---|
Apariencia |
DISP_STOCKPROP_APPEARANCE () |
Valor accesible como m_sAppearance. |
BackColor |
DISP_STOCKPROP_BACKCOLOR () |
Valor accesible llamando a GetBackColor. |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE () |
Valor accesible como m_sBorderStyle. |
Leyenda |
DISP_STOCKPROP_CAPTION () |
Valor accesible llamando a InternalGetText. |
Enabled |
DISP_STOCKPROP_ENABLED () |
Valor accesible como m_bEnabled. |
Fuente |
DISP_STOCKPROP_FONT () |
Vea el artículo Controles ActiveX de MFC: Utilizar las fuentes para el uso. |
ForeColor |
DISP_STOCKPROP_FORECOLOR () |
Valor accesible llamando a GetForeColor. |
hWnd |
DISP_STOCKPROP_HWND () |
Valor accesible como m_hWnd. |
Text |
DISP_STOCKPROP_TEXT () |
Valor accesible llamando a InternalGetText.Esta propiedad es igual que Caption, salvo el nombre de propiedad. |
ReadyState |
DISP_STOCKPROP_READYSTATE () |
Valor accesible como m_lReadyState o GetReadyState |
Propiedades y notificación comunes
La mayoría de las propiedades comunes tienen funciones de notificación que se pueden reemplazar.Por ejemplo, siempre que se cambie la propiedad de BackColor , se llama a la función de OnBackColorChanged (una función miembro de clase de control).La implementación predeterminada (en COleControl) llama InvalidateControl.Invalide esta función si desea tomar medidas adicionales en respuesta a esta situación.
Propiedades de colores
Puede utilizar ForeColor y las propiedades comunes de BackColor , o sus propias propiedades de colores personalizadas, al dibujar el control.Para utilizar una propiedad color, llame a la función miembro de COleControl::TranslateColor .Los parámetros de esta función es el valor de la propiedad color y un identificador opcional de la paleta.El valor devuelto es un valor de COLORREF que se puede pasar a funciones de GDI, como SetTextColor y CreateSolidBrush.
Los valores de color para ForeColor y las propiedades comunes de BackColor tiene acceso llamando a GetForeColor o la función de GetBackColor , respectivamente.
El ejemplo siguiente muestra cómo utilizar estas propiedades bicolores al pintar un control.Inicializa una variable temporal de COLORREF y un objeto de CBrush con llamadas a TranslateColor: uno utilizando la propiedad de ForeColor y mediante la propiedad de BackColor .Un objeto temporal de CBrush se utiliza para pintar el rectángulo del control, y el color del texto se establece mediante la propiedad de 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);