Clase CStatusBar

Una barra de control con una fila de paneles de salida de texto o "indicadores".

Sintaxis

class CStatusBar : public CControlBar

Miembros

Constructores públicos

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

Métodos públicos

Nombre Descripción
CStatusBar::CommandToIndex Obtiene el índice de un id. de indicador determinado.
CStatusBar::Create Crea la barra de estado, la adjunta al objeto CStatusBar y establece la fuente inicial y la altura de la barra.
CStatusBar::CreateEx Crea un objeto CStatusBar con estilos adicionales para el objeto insertado CStatusBarCtrl.
CStatusBar::DrawItem Se llama cuando cambia la apariencia de una barra de estado dibujada por el usuario.
CStatusBar::GetItemID Obtiene el id. de indicador de un índice determinado.
CStatusBar::GetItemRect Obtiene el rectángulo de presentación de un índice determinado.
CStatusBar::GetPaneInfo Obtiene el id. de indicador, el estilo y el ancho de un índice determinado.
CStatusBar::GetPaneStyle Obtiene el estilo de indicador de un índice determinado.
CStatusBar::GetPaneText Obtiene el texto de indicador de un índice determinado.
CStatusBar::GetStatusBarCtrl Permite el acceso directo al control común subyacente.
CStatusBar::SetIndicators Establece los id. de indicadores.
CStatusBar::SetPaneInfo Establece el id. de indicador, el estilo y el ancho de un índice determinado.
CStatusBar::SetPaneStyle Establece el estilo de indicador de un índice determinado.
CStatusBar::SetPaneText Obtiene el texto del indicador de un índice determinado.

Comentarios

Los paneles de salida se usan normalmente como líneas de mensaje y como indicadores de estado. Entre los ejemplos se incluyen las líneas de mensaje de ayuda del menú que explican brevemente el comando del menú seleccionado y los indicadores que muestran el estado de SCROLL LOCK, NUM LOCK y otras teclas.

CStatusBar::GetStatusBarCtrl es una función miembro nueva en MFC 4.0 que le permite aprovechar la compatibilidad del control común de Windows con la personalización y funcionalidad adicional de la barra de estado. Las funciones miembro de CStatusBar proporcionan la mayor parte de la funcionalidad de los controles comunes de Windows; sin embargo, al llamar a GetStatusBarCtrl, se puede proporcionar a las barras de estado aún más de las características de una barra de estado de Windows 95/98. Al llamar a GetStatusBarCtrl, se devolverá una referencia a un objeto CStatusBarCtrl. Consulte CStatusBarCtrl para obtener más información sobre el diseño de barras de herramientas mediante controles comunes de Windows. Para obtener más información general sobre los controles comunes, vea Controles comunes en Windows SDK.

El marco almacena información de indicador en una matriz con el indicador situado más a la izquierda en la posición 0. Al crear una barra de estado, se usa una matriz de id. de cadena que el marco asocia con los indicadores correspondientes. A continuación, puede usar un id. de cadena o un índice para acceder a un indicador.

De forma predeterminada, el primer indicador es "elástico": ocupa la longitud de la barra de estado no utilizada por los demás paneles de indicadores, de modo que los demás paneles estén alineados a la derecha.

Para crear una barra de estado, siga estos pasos:

  1. Construya el objeto CStatusBar.

  2. Llame a la función Create (o CreateEx) para crear la ventana de la barra de estado y adjuntarla al objeto CStatusBar.

  3. Llame a SetIndicators para asociar un id. de cadena a cada indicador.

Hay tres maneras de actualizar el texto en un panel de barra de estado:

  1. Llame a CWnd::SetWindowText para actualizar el texto solo en el panel 0.

  2. Llame a CCmdUI::SetText en el controlador ON_UPDATE_COMMAND_UI de la barra de estado.

  3. Llame a SetPaneText para actualizar el texto de cualquier panel.

Llame a SetPaneStyle para actualizar el estilo de un panel de barra de estado.

Para obtener más información sobre el uso de CStatusBar, consulte el artículo Implementación de la barra de estado en MFC y la nota técnica 31: Barras de control.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CControlBar

CStatusBar

Requisitos

Encabezado: afxext.h

CStatusBar::CommandToIndex

Obtiene el índice de indicador de un id. determinado.

int CommandToIndex(UINT nIDFind) const;

Parámetros

nIDFind
Id. de cadena del indicador cuyo índice se recuperará.

Valor devuelto

El índice del indicador si es correcto; -1 si no es correcto.

Comentarios

El índice del primer indicador es 0.

CStatusBar::Create

Crea una barra de estado (una ventana secundaria) y la asocia con el objeto CStatusBar.

virtual BOOL Create(
    CWnd* pParentWnd,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
    UINT nID = AFX_IDW_STATUS_BAR);

Parámetros

pParentWnd
El puntero al objeto CWnd cuya ventana de Windows es el elemento primario de la barra de estado.

dwStyle
El estilo de la barra de estado. Además de los estilos estándar de Windows, se admiten estos estilos.

  • La barra de control CBRS_TOP está en la parte superior de la ventana de marco.

  • La barra de control CBRS_BOTTOM está en la parte inferior de la ventana de marco.

  • La barra de control CBRS_NOALIGN no se cambia de posición cuando se cambia el tamaño del elemento principal.

Nid
El id. de la ventana secundaria de la barra de herramientas.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

También establece la fuente inicial y la altura de la barra de estado en un valor predeterminado.

CStatusBar::CreateEx

Llame a esta función para crear una barra de estado (una ventana secundaria) y asociarla al objeto CStatusBar.

virtual BOOL CreateEx(
    CWnd* pParentWnd,
    DWORD dwCtrlStyle = 0,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
    UINT nID = AFX_IDW_STATUS_BAR);

Parámetros

pParentWnd
El puntero al objeto CWnd cuya ventana de Windows es el elemento primario de la barra de estado.

dwCtrlStyle
Estilos adicionales para la creación del objeto CStatusBarCtrl insertado. El valor predeterminado especifica una barra de estado sin compatibilidad con el control de dimensionamiento o la información sobre herramientas. Los estilos de barra de estado admitidos son:

  • SBARS_SIZEGRIP El control de barra de estado incluye un control de dimensionamiento en el extremo derecho de la barra de estado. Un control de dimensionamiento es similar a un borde de dimensionamiento. Es un área rectangular en la que el usuario puede hacer clic y arrastrar para cambiar el tamaño de la ventana primaria.

  • SBT_TOOLTIPS La barra de estado admite información sobre herramientas.

Para más detalles sobre estos estilos, consulte Configuración de CStatusBarCtrl.

dwStyle
El estilo de la barra de estado. El valor predeterminado especifica que se crea una barra de estado visible en la parte inferior de la ventana de marco. Aplique cualquier combinación de los estilos de control de barra de estado enumerados en Estilos de ventana y CDialogBar::Create. Sin embargo, este parámetro siempre debe incluir los estilos WS_CHILD y WS_VISIBLE.

Nid
El id. de la ventana secundaria de la barra de estado.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Esta función también establece la fuente inicial y la altura de la barra de estado en un valor predeterminado.

Use CreateEx, en lugar de Crear, cuando ciertos estilos deban estar presentes durante la creación del control de barra de estado incrustado. Por ejemplo, establezca dwCtrlStyle en SBT_TOOLTIPS para mostrar informaciones sobre herramientas en un objeto de barra de estado.

CStatusBar::CStatusBar

Construye un objeto CStatusBar, crea una fuente de barra de estado predeterminada si es necesario y establece las características de fuente en valores predeterminados.

CStatusBar();

CStatusBar::DrawItem

El marco llama a esta función miembro cuando cambia un aspecto visual de una barra de estado dibujada por el propietario.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parámetros

lpDrawItemStruct
Un puntero a una estructura DRAWITEMSTRUCT que contiene información sobre el tipo de dibujo necesario.

Comentarios

El miembro itemAction de la estructura DRAWITEMSTRUCT define la acción de dibujo que se realizará. Invalida esta función miembro para implementar el dibujo de un objeto CStatusBar dibujado por el propietario. La aplicación debe restaurar todos los objetos de interfaz de dispositivo gráfico (GDI) seleccionados para el contexto de presentación proporcionado en lpDrawItemStruct antes de que finalice esta función miembro.

CStatusBar::GetItemID

Devuelve el id. del indicador especificado por nIndex.

UINT GetItemID(int nIndex) const;

Parámetros

nIndex
Índice del indicador cuyo id. se recuperará.

Valor devuelto

Devuelve el id. del indicador especificado por nIndex.

CStatusBar::GetItemRect

Copia las coordenadas del indicador especificado por nIndex en la estructura a la que apunta lpRect.

void GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Parámetros

nIndex
Índice del indicador cuyas coordenadas de rectángulo se recuperarán.

lpRect
Apunta a una estructura RECT o a un objeto CRect que recibirá las coordenadas del indicador especificado por nIndex.

Comentarios

Las coordenadas están en píxeles en relación con la esquina superior izquierda de la barra de estado.

CStatusBar::GetPaneInfo

Establece nID, nStyle y cxWidth en el id., estilo y ancho del panel de indicador en la ubicación especificada por nIndex.

void GetPaneInfo(
    int nIndex,
    UINT& nID,
    UINT& nStyle,
    int& cxWidth) const;

Parámetros

nIndex
Índice del panel cuya información se recuperará.

Nid
Referencia a un UINT que se establece en el id. del panel.

nStyle
Referencia a un UINT que se establece en el estilo del panel.

cxWidth
Referencia a un entero que se establece en el ancho del panel.

CStatusBar::GetPaneStyle

Llame a esta función miembro para recuperar el estilo del panel de una barra de estado.

UINT GetPaneStyle(int nIndex) const;

Parámetros

nIndex
Índice del panel cuyo estilo se recuperará.

Valor devuelto

El estilo del panel de la barra de estado especificado por nIndex.

Comentarios

El estilo de un panel determina cómo aparece el panel.

Para obtener una lista de los estilos disponibles para las barras de estado, consulte Crear.

CStatusBar::GetPaneText

Llame a esta función miembro para recuperar el texto que aparece en un panel de barra de estado.

CString GetPaneText(int nIndex) const;  void GetPaneText(int nIndex, CString& rString) const;

Parámetros

nIndex
Índice del panel cuyo texto se recuperará.

rString
Referencia a un objeto CString que contiene el texto que se recuperará.

Valor devuelto

Un objeto CString que contiene el texto del panel.

Comentarios

La segunda forma de esta función miembro rellena un objeto CString con el texto de cadena.

CStatusBar::GetStatusBarCtrl

Esta función miembro permite el acceso directo al control común subyacente.

CStatusBarCtrl& GetStatusBarCtrl() const;

Valor devuelto

Contiene una referencia a un objeto CStatusBarCtrl.

Comentarios

Use GetStatusBarCtrl para aprovechar las ventajas de la funcionalidad del control común de la barra de estado de Windows y para aprovechar la compatibilidad que CStatusBarCtrl proporciona para la personalización de la barra de estado. Por ejemplo, mediante el control común, puede especificar un estilo que incluya un control de dimensionamiento en la barra de estado o puede especificar un estilo para que la barra de estado aparezca en la parte superior del área cliente de la ventana primaria.

Para obtener más información general sobre los controles comunes, consulte Controles comunes en Windows SDK.

CStatusBar::SetIndicators

Establece el id. de cada indicador en el valor especificado por el elemento correspondiente de la matriz lpIDArray, carga el recurso de cadena especificado por cada id. y establece el texto del indicador en la cadena.

BOOL SetIndicators(
    const UINT* lpIDArray,
    int nIDCount);

Parámetros

lpIDArray
Puntero a una matriz de id.

nIDCount
Número de elementos de la matriz a la que apunta lpIDArray.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

CStatusBar::SetPaneInfo

Establece en el panel de indicador especificado un nuevo id., estilo y ancho.

void SetPaneInfo(
    int nIndex,
    UINT nID,
    UINT nStyle,
    int cxWidth);

Parámetros

nIndex
Índice del panel de indicador cuyo estilo se establecerá.

Nid
Nuevo id. para el panel de indicadores.

nStyle
Nuevo estilo para el panel de indicador.

cxWidth
Nuevo ancho para el panel de indicador.

Comentarios

Se admiten los estilos de indicador siguientes:

  • SBPS_NOBORDERS Sin borde 3D alrededor del panel.

  • SBPS_POPOUT Borde inverso para que el texto "resalte".

  • SBPS_DISABLED No dibujar texto.

  • SBPS_STRETCH Panel que se estira para rellenar el espacio sin usar. Solo un panel por barra de estado puede tener este estilo.

  • SBPS_NORMAL Sin estiramiento, bordes o resaltado.

CStatusBar::SetPaneStyle

Llame a esta función miembro para recuperar el estilo del panel de una barra de estado.

void SetPaneStyle(
    int nIndex,
    UINT nStyle);

Parámetros

nIndex
Índice del panel cuyo estilo se establecerá.

nStyle
El índice del panel cuyo estilo se establecerá.

Comentarios

El estilo de un panel determina cómo aparece el panel.

Para obtener una lista de los estilos disponibles para las barras de estado, consulte SetPaneInfo.

CStatusBar::SetPaneText

Llame a esta función miembro para establecer el texto del panel en la cadena a la que apunta lpszNewText.

BOOL SetPaneText(
    int nIndex,
    LPCTSTR lpszNewText,
    BOOL bUpdate = TRUE);

Parámetros

nIndex
Índice del panel cuyo texto se establecerá.

lpszNewText
Un puntero al nuevo texto del panel.

bUpdate
Si es TRUE, el panel se invalida después de establecer el texto.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Después de llamar a SetPaneText, debe agregar un controlador de actualización de la interfaz de usuario para mostrar el nuevo texto en la barra de estado.

Ejemplo

//Sets and displays text for pane index 3 and id ID_INDICATOR_SCRL
m_wndStatusBar.SetPaneText(3, _T("My New Status Bar Text"), TRUE);

 

//UI handler in the message map updates the status bar text:
ON_UPDATE_COMMAND_UI(ID_INDICATOR_SCRL, &CMainFrame::OnUpdatePane)

 

void CMainFrame::OnUpdatePane(CCmdUI* pCmdUI)
{
   pCmdUI->Enable();
}

Vea también

MFC Sample CTRLBARS
Ejemplo de MFC DLGCBR32
CControlBar Class
Gráfico de jerarquías
CStatusBarCtrl (clase)
CControlBar Class