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
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 |
---|---|---|---|---|
VERDADERO | VERDADERO | Ajuste horizontal | Orientación horizontal | No acoplamiento |
VERDADERO | FALSO | Ajuste vertical | Orientación vertical | No acoplamiento |
FALSO | VERDADERO | Sin extensión disponible | Orientación horizontal | Acoplamiento |
FALSO | FALSO | 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 deCControlBar
.
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)