CControlBar Class

Clase base para las clases de barra de controles CStatusBar, CToolBar, CDialogBar, CReBar y COleResizeBar.

Sintaxis

class CControlBar : public CWnd

Miembros

Constructores protegidos

Nombre Descripción
CControlBar::CControlBar Construye un objeto CControlBar.

Métodos públicos

Nombre Descripción
CControlBar::CalcDynamicLayout Devuelve el tamaño de una barra de control dinámica como un objeto CSize.
CControlBar::CalcFixedLayout Devuelve el tamaño de la barra de control como un objeto CSize.
CControlBar::CalcInsideRect Devuelve las dimensiones actuales del área de la barra de controles, incluidos los bordes.
CControlBar::DoPaint Representa los bordes y la barra de redimensionamiento de la barra de controles.
CControlBar::DrawBorders Representa los bordes de la barra de controles.
CControlBar::DrawGripper Representa la barra de redimensionamiento de la barra de controles.
CControlBar::EnableDocking Permite que una barra de controles esté acoplada o flotante.
CControlBar::GetBarStyle Recupera la configuración de estilo de la barra de controles.
CControlBar::GetBorders Recupera los valores de borde de la barra de controles.
CControlBar::GetCount Devuelve el número de elementos que no son HWND de la barra de control.
CControlBar::GetDockingFrame Devuelve un puntero al marco al que está acoplada una barra de controles.
CControlBar::IsFloating Devuelve un valor distinto de cero si la barra de controles en cuestión es una barra de controles flotante.
CControlBar::OnUpdateCmdUI Llama a los controladores de la interfaz de usuario de comandos.
CControlBar::SetBarStyle Modifica la configuración de estilo de la barra de controles.
CControlBar::SetBorders Establece los valores de borde de la barra de controles.
CControlBar::SetInPlaceOwner Cambia el propietario en contexto de una barra de controles.

Miembros de datos públicos

Nombre Descripción
CControlBar::m_bAutoDelete Si es distinto de cero, el objeto CControlBar se elimina cuando se destruye la barra de controles de Windows.
CControlBar::m_pInPlaceOwner Propietario en contexto de la barra de controles.

Comentarios

Una barra de controles es una ventana que suele estar alineada a la izquierda o a la derecha de una ventana de marco. Puede contener elementos secundarios que son controles basados en HWND (ventanas que generan y responden a los mensajes de Windows) o elementos no basados en HWND (no son ventanas y se administran mediante el código de la aplicación o el código del marco). Los cuadros de lista y los controles de edición son ejemplos de controles basados en HWND; los paneles de la barra de estado y los botones de mapa de bits son ejemplos de controles no basados en HWND.

Las ventanas de barra de controles suelen ser ventanas secundarias de una ventana de marco principal y suelen ser elementos relacionados de la vista del cliente o del cliente MDI de la ventana de marco. Un objeto CControlBar utiliza información acerca del rectángulo cliente de su ventana primaria para colocarse. Después informa a la ventana primaria de cuánto espacio queda sin asignar en el área cliente de la ventana primaria.

Para obtener más información sobre CControlBar, vea:

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CControlBar

Requisitos

Encabezado: afxext.h

CControlBar::CalcDynamicLayout

El marco llama a esta función miembro para calcular las dimensiones de una barra de herramientas dinámica.

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

Parámetros

nLength
Dimensión solicitada de la barra de control, ya sea horizontal o vertical, según dwMode.

nMode
Las marcas predefinidas siguientes se usan para determinar el alto y el ancho de la barra de control dinámica. Use el operador OR de bit a bit (|) para combinar las marcas.

Marcas de modo de diseño Qué significa
LM_STRETCH Indica si la barra de control debe ajustarse al tamaño del marco. Establezca si la barra no es de acoplamiento (no disponible para acoplamiento). No se establece cuando la barra está acoplada o flotando (disponible para acoplamiento). Si se establece, LM_STRETCH omite nLength y devuelve dimensiones basadas en el estado LM_HORZ. LM_STRETCH funciona de forma similar al parámetro bStretch que se usa en CalcFixedLayout. Para obtener información sobre la relación entre el ajuste y la orientación, vea esa función miembro.
LM_HORZ Indica que la barra está orientada horizontal o verticalmente. Se establece si la barra está orientada horizontalmente y no se establee si lo está verticalmente. LM_HORZ funciona de forma similar al parámetro bHorz que se usa en CalcFixedLayout. Para obtener información sobre la relación entre el ajuste y la orientación, vea esa función miembro.
LM_MRUWIDTH Ancho dinámico usado más recientemente. Omite el parámetro nLength y usa el ancho usado más recientemente que se ha registrado.
LM_HORZDOCK Dimensiones horizontales con acoplamiento. Omite el parámetro nLength y devuelve el tamaño dinámico con el ancho más grande.
LM_VERTDOCK Dimensiones verticales con acoplamiento. Omite el parámetro nLength y devuelve el tamaño dinámico con el alto más grande.
LM_LENGTHY Se establece si nLength indica el alto (dirección Y) en lugar del ancho.
LM_COMMIT Restablece LM_MRUWIDTH al ancho actual de la barra de control flotante.

Valor devuelto

El tamaño de la barra de control, en píxeles, de un objeto CSize.

Comentarios

Invalide esta función miembro para proporcionar su propio diseño dinámico en las clases derivadas de CControlBar. Las clases MFC derivadas de CControlBar, como CToolbar, invalidan esta función miembro y proporcionan su propia implementación.

CControlBar::CalcFixedLayout

Llame a esta función miembro para calcular el tamaño horizontal de una barra de control.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

Parámetros

bStretch
Indica si la barra debe ajustarse al tamaño del marco o no. El parámetro bStretch es distinto de cero cuando la barra no es una barra de acoplamiento (no disponible para el acoplamiento) y es 0 cuando está acoplada o es flotante (disponible para acoplamiento).

bHorz
Indica que la barra está orientada horizontal o verticalmente. El parámetro bHorz es distinto de cero si la barra está orientada horizontalmente y es 0 si lo está verticalmente.

Valor devuelto

El tamaño de la barra de control, en píxeles, de un objeto CSize.

Comentarios

Las barras de control, como las barras de herramientas, pueden ajustarse horizontal o verticalmente para acomodar los botones contenidos en la barra de control.

Si bStretch es TRUE, ajuste la dimensión a lo largo de la orientación proporcionada por bHorz. En otras palabras, si bHorz es FALSE, la barra de control se ajusta verticalmente. Si bStretch es FALSE, no se produce ningún ajuste. En la tabla siguiente se muestran los cambios posibles y los estilos de barra de control resultantes de bStretch y bHorz.

bStretch bHorz Ajuste Orientación Acoplamiento/no acoplamiento
TRUE TRUE Ajuste horizontal Orientación horizontal No acoplamiento
TRUE FALSE Ajuste vertical Orientación vertical No acoplamiento
FALSE TRUE Sin extensión disponible Orientación horizontal Acoplamiento
FALSE FALSE Sin extensión disponible Orientación vertical Acoplamiento

CControlBar::CalcInsideRect

El marco llama a esta función para calcular el área cliente de la barra de control.

virtual void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

Parámetros

rect
Contiene las dimensiones actuales del área de la barra de control, incluidos los bordes.

bHorz
Indica que la barra está orientada horizontal o verticalmente. El parámetro bHorz es distinto de cero si la barra está orientada horizontalmente y es 0 si lo está verticalmente.

Comentarios

Se llama a esta función antes de pintar la barra de control.

Invalide esta función para personalizar la representación de los bordes y la barra de redimensionamiento de la barra de control.

CControlBar::CControlBar

Construye un objeto CControlBar.

CControlBar();

CControlBar::DoPaint

Lo llama el marco para representar los bordes y la barra de redimensionamiento de la barra de control.

virtual void DoPaint(CDC* pDC);

Parámetros

pDC
Apunta al contexto de dispositivo que se usará para representar los bordes y la barra de redimensionamiento de la barra de control.

Comentarios

Invalide esta función para personalizar el comportamiento de dibujo de la barra de control.

Otro método de personalización consiste en invalidar las funciones DrawBorders y DrawGripper, y agregar código de dibujo personalizado para los bordes y la barra de redimensionamiento. Como el método predeterminado DoPaint llama a estos métodos, no hay que invalidar DoPaint.

CControlBar::DrawBorders

Lo llama el marco para representar los bordes de la barra de control.

virtual void DrawBorders(
    CDC* pDC,
    CRect& rect);

Parámetros

pDC
Apunta al contexto de dispositivo que se usará para representar los bordes de la barra de control.

rect
Objeto CRect que contiene las dimensiones de la barra de control.

Comentarios

Invalide esta función para personalizar la apariencia de los bordes de la barra de control.

CControlBar::DrawGripper

Lo llama el marco para representar la barra de redimensionamiento de la barra de control.

virtual void DrawGripper(
    CDC* pDC,
    const CRect& rect);

Parámetros

pDC
Apunta al contexto de dispositivo que se usará para representar la barra de redimensionamiento de la barra de control.

rect
Objeto CRect que contiene las dimensiones de la barra de redimensionamiento de la barra de control.

Comentarios

Invalide esta función para personalizar la apariencia de la barra de redimensionamiento de la barra de control.

CControlBar::EnableDocking

Llame a esta función para que se pueda acoplar una barra de control.

void EnableDocking(DWORD dwDockStyle);

Parámetros

dwDockStyle
Especifica si la barra de control admite el acoplamiento y los lados de la ventana primaria a la que se puede acoplar, si se admite. Puede ser una o varias de las siguientes:

  • CBRS_ALIGN_TOP permite el acoplamiento en la parte superior del área cliente.

  • CBRS_ALIGN_BOTTOM permite el acoplamiento en la parte inferior del área cliente.

  • CBRS_ALIGN_LEFT permite el acoplamiento en el lado izquierdo del área cliente.

  • CBRS_ALIGN_RIGHT permite el acoplamiento en el lado derecho del área de cliente.

  • CBRS_ALIGN_ANY permite el acoplamiento en cualquier lado del área cliente.

  • CBRS_FLOAT_MULTI permite que varias barras de control sean flotantes en una sola ventana minimarco.

Si es 0 (es decir, indica que no hay ninguna marca), la barra de control no se acoplará.

Comentarios

Los lados especificados deben coincidir con uno de los lados habilitados para el acoplamiento en la ventana del marco de destino; de lo contrario, la barra de control no se podrá acoplar a esa ventana de marco.

CControlBar::GetBarStyle

Llame a esta función para determinar qué configuración de CBRS_ (estilos de barra de control) está establecida para la barra de control.

DWORD GetBarStyle();

Valor devuelto

La configuración actual de CBRS_ (estilos de barra de control) para la barra de control. Consulte CControlBar::SetBarStyle para obtener la lista completa de estilos disponibles.

Comentarios

No controla los estilos de WS_ (estilo de ventana).

CControlBar::GetBorders

Devuelve los valores de borde actuales de la barra de control.

CRect GetBorders() const;

Valor devuelto

Objeto CRect que contiene el ancho actual (en píxeles) de cada lado del objeto de barra de control. Por ejemplo, el valor del miembro izquierdo del objeto CRect es el ancho del borde izquierdo.

CControlBar::GetCount

Devuelve el número de elementos que no son HWND en el objeto CControlBar.

int GetCount() const;

Valor devuelto

Número de elementos que no son HWND en el objeto CControlBar. Esta función devuelve 0 para un objeto CDialogBar.

Comentarios

El tipo de elemento depende del objeto derivado: paneles para objetos CStatusBar y botones y separadores para objetos CToolBar.

CControlBar::GetDockingFrame

Llame a esta función miembro para obtener un puntero a la ventana de marco actual a la que está acoplada la barra de control.

CFrameWnd* GetDockingFrame() const;

Valor devuelto

Puntero a una ventana de marco si se ejecuta correctamente; en caso contrario, será NULL.

Si la barra de control no está acoplada a una ventana de marco (es decir, si la barra de control está flotante), esta función devolverá un puntero a su CMiniFrameWnd primario.

Comentarios

Para obtener más información sobre las barras de control acoplables, vea CControlBar::EnableDocking y CFrameWnd::DockControlBar.

CControlBar::IsFloating

Llame a esta función miembro para determinar si la barra de control está flotando o acoplada.

BOOL IsFloating() const;

Valor devuelto

Distinto de cero si la barra de control está flotando; de lo contrario, es 0.

Comentarios

Para cambiar el estado de una barra de control de acoplada a flotante, llame a CFrameWnd::FloatControlBar.

CControlBar::m_bAutoDelete

Si es distinto de cero, el objeto CControlBar se elimina cuando se destruye la barra de controles de Windows.

BOOL m_bAutoDelete;

Comentarios

m_bAutoDelete es una variable pública de tipo BOOL.

Normalmente, un objeto de barra de control se inserta en un objeto de ventana de marco. En este caso, m_bAutoDelete es 0 porque el objeto de barra de control insertado se destruye junto a la ventana de marco.

Establezca esta variable en un valor distinto de cero si asigna un objeto CControlBar en el montón y no tiene previsto llamar a delete.

CControlBar::m_pInPlaceOwner

Propietario en contexto de la barra de controles.

CWnd* m_pInPlaceOwner;

CControlBar::OnUpdateCmdUI

El marco llama a esta función miembro para actualizar el estado de la barra de herramientas o estado.

virtual void OnUpdateCmdUI(
    CFrameWnd* pTarget,
    BOOL bDisableIfNoHndler) = 0;

Parámetros

pTarget
Apunta a la ventana de marco principal de la aplicación. Este puntero se usa para enrutar mensajes de actualización.

bDisableIfNoHndler
Una marca que indica si un control que no tiene controlador de actualización debe mostrarse automáticamente como deshabilitado.

Comentarios

Para actualizar un botón o panel específico, use la macro ON_UPDATE_COMMAND_UI en la asignación de mensajes para establecer un controlador de actualización correctamente. Consulte ON_UPDATE_COMMAND_UI para obtener más información sobre el uso de esta macro.

El marco llama a OnUpdateCmdUI cuando la aplicación está inactiva. La ventana de marco que se actualizará debe ser una ventana secundaria, al menos indirectamente, de una ventana de marco visible. OnUpdateCmdUI es un elemento invalidable avanzado.

CControlBar::SetBarStyle

Llame a esta función para establecer los estilos de CBRS_ que quiera para la barra de control.

void SetBarStyle(DWORD dwStyle);

Parámetros

dwStyle
Estilos elegidos para la barra de control. Puede ser una o varias de las siguientes:

  • CBRS_ALIGN_TOP permite acoplar la barra de control a la parte superior del área cliente de una ventana de marco.

  • CBRS_ALIGN_BOTTOM permite acoplar la barra de control a la parte inferior del área cliente de una ventana de marco.

  • CBRS_ALIGN_LEFT permite acoplar la barra de control al lado izquierdo del área cliente de una ventana de marco.

  • CBRS_ALIGN_RIGHT permite acoplar la barra de control al lado derecho del área cliente de una ventana de marco.

  • CBRS_ALIGN_ANY permite acoplar la barra de control a cualquier lado del área cliente de una ventana de marco.

  • CBRS_BORDER_TOP hace que se dibuje un borde en el extremo superior de la barra de control cuando debe ser visible.

  • CBRS_BORDER_BOTTOM hace que se dibuje un borde en el extremo inferior de la barra de control cuando debe ser visible.

  • CBRS_BORDER_LEFT hace que se dibuje un borde en el extremo izquierdo de la barra de control cuando debe ser visible.

  • CBRS_BORDER_RIGHT hace que se dibuje un borde en el extremo derecho de la barra de control cuando debe ser visible.

  • CBRS_FLOAT_MULTI permite que varias barras de control sean flotantes en una sola ventana minimarco.

  • CBRS_TOOLTIPS hace que se muestren sugerencias de herramientas para la barra de control.

  • CBRS_FLYBY hace que el texto del mensaje se actualice al mismo tiempo que las sugerencias de herramientas.

  • CBRS_GRIPPER hace que se dibuje una barra de redimensionamiento similar a la usada en bandas de un CReBar objeto para cualquier clase derivada de CControlBar.

Comentarios

No afecta a la configuración de WS_ (estilo de ventana).

CControlBar::SetBorders

Llame a esta función para establecer el tamaño de los bordes de la barra de control.

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

Parámetros

cxLeft
Ancho (en píxeles) del borde izquierdo de la barra de control.

cyTop
Alto (en píxeles) del borde superior de la barra de control.

cxRight
Ancho (en píxeles) del borde derecho de la barra de control.

cyBottom
Alto (en píxeles) del borde inferior de la barra de control.

lpRect
Puntero a un objeto CRect que contiene el ancho actual (en píxeles) de cada borde del objeto de barra de control.

Ejemplo

En el ejemplo de código siguiente se establecen los bordes superior e inferior de la barra de control en 5 píxeles y los bordes izquierdo y derecho en 2 píxeles:

CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);

CControlBar::SetInPlaceOwner

Cambia el propietario en contexto de una barra de controles.

void SetInPlaceOwner(CWnd* pWnd);

Parámetros

pWnd
Puntero a un objeto CWnd .

Comentarios

Consulte también

MFC Sample CTRLBARS
CWnd (clase)
Gráfico de jerarquías
CToolBar (clase)
CDialogBar (clase)
CStatusBar (clase)
CReBar (clase)