Classe CStatusBarCtrl
Fornece a funcionalidade de controle de barra de status comum do Windows.
Sintaxe
class CStatusBarCtrl : public CWnd
Membros
Construtores públicos
Nome | Descrição |
---|---|
CStatusBarCtrl::CStatusBarCtrl | Constrói um objeto CStatusBarCtrl . |
Métodos públicos
Nome | Descrição |
---|---|
CStatusBarCtrl::Create | Cria um controle de barra de status e o anexa a um objeto CStatusBarCtrl . |
CStatusBarCtrl::CreateEx | Cria um controle de barra de status com os estilos estendidos do Windows especificados e o anexa a um objeto CStatusBarCtrl . |
CStatusBarCtrl::DrawItem | Chamado quando um aspecto visual de um controle de barra de status de desenho de proprietário é alterado. |
CStatusBarCtrl::GetBorders | Recupera as larguras atuais das bordas horizontal e vertical de um controle de barra de status. |
CStatusBarCtrl::GetIcon | Recupera o ícone de uma parte (também conhecida como painel) no controle de barra de status atual. |
CStatusBarCtrl::GetParts | Recupera uma contagem das partes em um controle de barra de status. |
CStatusBarCtrl::GetRect | Recupera o retângulo delimitador de uma parte em um controle de barra de status. |
CStatusBarCtrl::GetText | Recupera o texto da parte fornecida de um controle de barra de status. |
CStatusBarCtrl::GetTextLength | Recupere o comprimento, em caracteres, do texto da parte fornecida de um controle de barra de status. |
CStatusBarCtrl::GetTipText | Recupera o texto da dica de ferramenta para um painel em uma barra de status. |
CStatusBarCtrl::IsSimple | Verifica um controle de janela de status para determinar se ele está no modo simples. |
CStatusBarCtrl::SetBkColor | Define a cor da tela de fundo em uma barra de status. |
CStatusBarCtrl::SetIcon | Define o ícone de um painel em uma barra de status. |
CStatusBarCtrl::SetMinHeight | Define a altura mínima da área de desenho de um controle de barra de status. |
CStatusBarCtrl::SetParts | Define o número de partes em um controle de barra de status e a coordenada da borda direita de cada parte. |
CStatusBarCtrl::SetSimple | Especifica se um controle de barra de status exibe texto simples ou exibe todas as partes de controle definidas por uma chamada anterior para SetParts . |
CStatusBarCtrl::SetText | Define o texto na parte determinada de um controle de barra de status. |
CStatusBarCtrl::SetTipText | Define o texto da dica de ferramenta para um painel em uma barra de status. |
Comentários
Um "controle de barra de status" é uma janela horizontal, geralmente exibida na parte inferior de uma janela pai, na qual um aplicativo pode exibir vários tipos de informações de status. O controle de barra de status pode ser dividido em partes para exibir mais de um tipo de informação.
Esse controle (e, portanto, a classe CStatusBarCtrl
) está disponível apenas para programas em execução no Windows 95/98 e Windows NT versão 3.51 e posteriores.
Para mais informações sobre como usar CStatusBarCtrl
, confira Controles e Uso de CStatusBarCtrl.
Hierarquia de herança
CStatusBarCtrl
Requisitos
Cabeçalho: afxcmn.h
CStatusBarCtrl::Create
Cria um controle de barra de status e o anexa a um objeto CStatusBarCtrl
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parâmetros
dwStyle
Especifica o estilo do controle de barra de status. Aplique qualquer combinação de estilos de controle de barra de status listados em Estilos de Controle Comuns no SDK do Windows. Esse parâmetro deve incluir o estilo WS_CHILD. Ele também deve incluir o estilo WS_VISIBLE.
rect
Especifica o tamanho e a posição do controle de barra de status. Pode ser um objeto CRect ou uma estrutura RECT.
pParentWnd
Especifica a janela pai do controle de barra de status, geralmente um CDialog
. Não pode ser NULL.
Nid
Especifica a ID do controle de barra de status.
Valor de retorno
Diferente de zero se bem-sucedido; caso contrário, zero.
Comentários
O CStatusBarCtrl
é construído em duas etapas. Primeiro, chame o construtor, então chame Create
, o que cria o controle de barra de status e o anexa ao objeto CStatusBarCtrl
.
A posição padrão de uma janela de status é na parte inferior da janela pai, mas você pode especificar o estilo CCS_TOP para que ele apareça na parte superior da área de cliente da janela pai. Você pode especificar o estilo SBARS_SIZEGRIP para incluir uma garra de dimensionamento na extremidade direita da janela de status . Não é recomendável combinar os estilos CCS_TOP e SBARS_SIZEGRIP, pois a garra de dimensionamento resultante não é funcional, embora o sistema a desenhe na janela de status.
Para criar uma barra de status com estilos de janela estendidos, chame CStatusBarCtrl::CreateEx em vez de Create
.
Exemplo
VERIFY(m_wndSBC.Create(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP,
CRect(0, 0, 0, 0), this, IDC_STATUSBARCTRL));
CStatusBarCtrl::CreateEx
Cria um controle (uma janela filho) e o associa ao objeto CStatusBarCtrl
.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parâmetros
dwExStyle
Especifica o estilo estendido do controle que está sendo criado. Para obter uma lista de estilos estendidos do Windows, confira o parâmetro dwExStyle para CreateWindowEx no SDK do Windows.
dwStyle
Especifica o estilo do controle de barra de status. Aplique qualquer combinação de estilos de controle de barra de status listados em Estilos de Controle Comuns no SDK do Windows. Esse parâmetro deve incluir o estilo WS_CHILD. Ele também deve incluir o estilo WS_VISIBLE.
rect
Uma referência a uma estrutura RECT que descreve o tamanho e a posição da janela a ser criada, em coordenadas do cliente de pParentWnd.
pParentWnd
Um ponteiro para a janela que é pai do controle.
Nid
A ID da janela filho do controle.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Use CreateEx
em vez de Criar para aplicar estilos estendidos do Windows, especificados pelo prefácio WS_EX_ de estilos estendidos do Windows.
CStatusBarCtrl::CStatusBarCtrl
Constrói um objeto CStatusBarCtrl
.
CStatusBarCtrl();
CStatusBarCtrl::DrawItem
Chamado pela estrutura quando um aspecto visual de um controle de barra de status de desenho do proprietário é alterado.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parâmetros
lpDrawItemStruct
Um ponteiro longo para uma estrutura DRAWITEMSTRUCT que contém informações sobre o tipo de desenho necessário.
Comentários
O membro itemAction
da estrutura DRAWITEMSTRUCT
define a ação de desenho a ser executada.
Por padrão, essa função membro não faz nada. Substitua essa função de membro para implementar o desenho para um objeto CStatusBarCtrl
desenhado pelo proprietário.
O aplicativo deve restaurar todos os objetos GDI (Graphics Device Interface) selecionados para o contexto de exibição fornecido no lpDrawItemStruct antes que a função membro seja encerrada.
CStatusBarCtrl::GetBorders
Recupera as larguras atuais do controle de barra de status das bordas horizontais e verticais e do espaço entre retângulos.
BOOL GetBorders(int* pBorders) const;
BOOL GetBorders(
int& nHorz,
int& nVert,
int& nSpacing) const;
Parâmetros
pBorders
Endereço de uma matriz inteiro com três elementos. O primeiro elemento recebe a largura da borda horizontal, o segundo recebe a largura da borda vertical e o terceiro recebe a largura da borda entre retângulos.
nHorz
Referência a um inteiro que recebe a largura da borda horizontal.
nVert
Referência a um inteiro que recebe a largura da borda vertical.
nSpacing
Referência a um inteiro que recebe a largura da borda entre retângulos.
Valor de retorno
Diferente de zero se bem-sucedido; caso contrário, zero.
Comentários
Essas bordas determinam o espaçamento entre a borda externa do controle e os retângulos dentro do controle que contêm texto.
Exemplo
RECT rectPane1;
VERIFY(m_wndSBC.GetRect(1, &rectPane1));
int borderArray[3];
VERIFY(m_wndSBC.GetBorders(borderArray));
int nHorz, nVert, nSpacing;
VERIFY(m_wndSBC.GetBorders(nHorz, nVert, nSpacing));
CStatusBarCtrl::GetIcon
Recupera o ícone de uma parte (também conhecida como painel) no controle de barra de status atual.
HICON GetIcon(int iPart) const;
Parâmetros
iPart
[in] O índice baseado em zero da parte que contém o ícone a ser recuperado. Se esse parâmetro for -1, a barra de status será considerada uma barra de status de modo simples.
Valor de retorno
O identificador para o ícone se o método tiver êxito; caso contrário, NULL.
Comentários
Esse método envia a mensagem SB_GETICON, que é descrita no SDK do Windows.
Um controle de barra de status consiste em uma linha de painéis de saída de texto, que também são conhecidos como partes. Para mais informações sobre a barra de status, confira Implementação da barra de status no MFC e Como definir o modo de um objeto CStatusBarCtrl.
Exemplo
O primeiro exemplo de código define uma variável m_statusBar
, que é usada para acessar o controle de barra de status atual. Essa variável será usada no próximo exemplo.
public:
CStatusBarCtrl m_statusBar;
O próximo exemplo de código copia um ícone para dois painéis do controle de barra de status atual. Em uma seção anterior do exemplo de código, criamos um controle de barra de status com três painéis e adicionamos um ícone ao primeiro painel. Este exemplo recupera o ícone do primeiro painel e o adiciona ao segundo e ao terceiro painéis.
// Get the icon from pane 1 and set it in panes 2 and 3.
HICON hIcon = m_statusBar.GetIcon(0);
m_statusBar.SetIcon(1, hIcon);
m_statusBar.SetIcon(2, hIcon);
CStatusBarCtrl::GetParts
Recupera uma contagem das partes em um controle de barra de status.
int GetParts(
int nParts,
int* pParts) const;
Parâmetros
nParts
Número de partes para as quais recuperar coordenadas. Se esse parâmetro for maior que o número de partes no controle, a mensagem recuperará coordenadas somente para partes existentes.
pParts
Endereço de uma matriz de inteiro com o mesmo número de elementos que o número de partes especificadas por nParts. Cada elemento na matriz recebe a coordenada do cliente da borda direita da parte correspondente. Se um elemento for definido como -1, a posição da borda direita para essa parte se estenderá até a borda direita da barra de status.
Valor de retorno
O número de partes no controle, se bem-sucedido ou zero, caso contrário.
Comentários
Essa função membro também recupera a coordenada da borda direita do número determinado de partes.
Exemplo
int pParts[2];
int nParts = m_wndSBC.GetParts(2, pParts);
CStatusBarCtrl::GetRect
Recupera o retângulo delimitador de uma parte em um controle de barra de status.
BOOL GetRect(
int nPane,
LPRECT lpRect) const;
Parâmetros
nPane
Índice baseado em zero da parte cujo retângulo delimitador deve ser recuperado.
lpRect
Endereço de uma estrutura RECT que recebe o retângulo delimitador.
Valor de retorno
Diferente de zero se bem-sucedido; caso contrário, zero.
Exemplo
CRect rectPane1;
VERIFY(m_wndSBC.GetRect(1, &rectPane1));
CStatusBarCtrl::GetText
Recupera o texto da parte fornecida de um controle de barra de status.
CString GetText(
int nPane,
int* pType = NULL) const;
int GetText(
LPCTSTR lpszText,
int nPane,
int* pType = NULL) const;
Parâmetros
lpszTexto
Endereço do buffer que recebe o texto. Esse parâmetro é uma cadeia de caracteres terminada em nulo.
nPane
Índice baseado em zero da parte da qual recuperar texto.
pType
Ponteiro para um inteiro que recebe as informações de tipo. O tipo pode ser um destes valores:
0 O texto é desenhado com uma borda a ser exibida abaixo do plano da barra de status.
SBT_NOBORDERS O texto é desenhado sem bordas.
SBT_POPOUT O texto é desenhado com uma borda a ser exibida acima do plano da barra de status.
SBT_OWNERDRAW Se o texto tiver o tipo de desenho SBT_OWNERDRAW, pType receberá essa mensagem e retornará o valor de 32 bits associado ao texto, em vez do tamanho e do tipo de operação.
Valor de retorno
O comprimento, em caracteres, do texto ou de um CString que contém o texto atual.
Exemplo
int nType;
TCHAR *pszPaneOneText;
pszPaneOneText = new TCHAR[m_wndSBC.GetTextLength(1, &nType) + 1];
int nTextLength = m_wndSBC.GetText(pszPaneOneText, 1, &nType);
switch (nType)
{
case 0:
// Text is drawn with a border to appear lower than the
// plane of the status bar
break;
case SBT_NOBORDERS:
// text is drawn without borders
break;
case SBT_OWNERDRAW:
// Text is drawn by the parent window
break;
case SBT_POPOUT:
// Text is drawn with a border to appear higher than the
// plane of the status bar
break;
}
delete pszPaneOneText;
CStatusBarCtrl::GetTextLength
Recupera o comprimento, em caracteres, do texto da parte fornecida de um controle de barra de status.
int GetTextLength(
int nPane,
int* pType = NULL) const;
Parâmetros
nPane
Índice baseado em zero da parte da qual recuperar texto.
pType
Ponteiro para um inteiro que recebe as informações de tipo. O tipo pode ser um destes valores:
0 O texto é desenhado com uma borda a ser exibida abaixo do plano da barra de status.
SBT_NOBORDERS O texto é desenhado sem bordas.
SBT_OWNERDRAW O texto é desenhado pela janela pai.
SBT_POPOUT O texto é desenhado com uma borda a ser exibida acima do plano da barra de status.
Valor de retorno
O comprimento nos caracteres do texto.
Exemplo
int nType;
int nLength = m_wndSBC.GetTextLength(0, &nType);
switch (nType)
{
case 0:
// Text is drawn with a border to appear lower than the
// plane of the status bar
break;
case SBT_NOBORDERS:
// text is drawn without borders
break;
case SBT_OWNERDRAW:
// Text is drawn by the parent window
break;
case SBT_POPOUT:
// Text is drawn with a border to appear higher than the
// plane of the status bar
break;
}
CStatusBarCtrl::GetTipText
Recupera o texto da dica de ferramenta para um painel em uma barra de status.
CString GetTipText(int nPane) const;
Parâmetros
nPane
O índice baseado em zero do painel de barras de status para receber o texto da dica de ferramenta.
Valor de retorno
Um objeto CString que contém o texto a ser usado na dica de ferramenta.
Comentários
Essa função membro implementa o comportamento do SB_GETTIPTEXT de mensagem Win32, conforme descrito no SDK do Windows.
Exemplo
CString csPane0TipText = m_wndSBC.GetTipText(0);
CStatusBarCtrl::IsSimple
Verifica um controle de janela de status para determinar se ele está no modo simples.
BOOL IsSimple() const;
Valor de retorno
Não zero se o controle da janela de status estiver no modo simples; caso contrário, zero.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 SB_ISSIMPLE, conforme descrito no SDK do Windows.
CStatusBarCtrl::SetBkColor
Define a cor da tela de fundo em uma barra de status.
COLORREF SetBkColor(COLORREF cr);
Parâmetros
cr
Um valor COLORREF que especifica a nova cor da tela de fundo. Especifique o valor CLR_DEFAULT para fazer com que a barra de status use sua cor da tela de fundo padrão.
Valor de retorno
Um valor COLORREF que representa a cor da tela de fundo padrão anterior.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 SB_SETBKCOLOR, conforme descrito no SDK do Windows.
Exemplo
m_wndSBC.SetBkColor(RGB(0, 0, 250));
HICON hIcon = AfxGetApp()->LoadIcon(IDI_PANE_0_ICON);
VERIFY(hIcon);
VERIFY(m_wndSBC.SetIcon(0, hIcon));
CStatusBarCtrl::SetIcon
Define o ícone de um painel em uma barra de status.
BOOL SetIcon(
int nPane,
HICON hIcon);
Parâmetros
nPane
O índice baseado em zero do painel que receberá o ícone. Se esse parâmetro for -1, a barra de status será considerada uma barra de status simples.
hIcon
Identificador para o ícone a ser definido. Se esse valor for NULL, o ícone será removido da parte.
Valor de retorno
Diferente de zero se bem-sucedido; caso contrário, zero.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 SB_SETICON, conforme descrito no SDK do Windows.
Exemplo
Confira o exemplo de CStatusBarCtrl::SetBkColor.
CStatusBarCtrl::SetMinHeight
Define a altura mínima da área de desenho de um controle de barra de status.
void SetMinHeight(int nMin);
Parâmetros
nMin
A altura mínima, em pixels, do controle.
Comentários
A altura mínima é a soma de nMin e o dobro da largura, em pixels, da borda vertical do controle de barra de status.
Exemplo
m_wndSBC.SetMinHeight(40);
CStatusBarCtrl::SetParts
Define o número de partes em um controle de barra de status e a coordenada da borda direita de cada parte.
BOOL SetParts(
int nParts,
int* pWidths);
Parâmetros
nParts
Número de partes a serem definidas. O número de partes não pode ser maior que 255.
pWidths
Endereço de uma matriz de inteiros com o mesmo número de elementos que as partes especificadas por nParts. Cada elemento na matriz especifica a posição, nas coordenadas do cliente, da borda direita da parte correspondente. Se um elemento for -1, a posição da borda direita para essa parte se estenderá até a borda direita do controle.
Valor de retorno
Diferente de zero se bem-sucedido; caso contrário, zero.
Exemplo
const int c_nParts = 4;
CRect rect;
m_wndSBC.GetClientRect(&rect);
int aWidths[c_nParts] = {rect.right - 300, rect.right - 200, rect.right - 100,
-1};
VERIFY(m_wndSBC.SetParts(c_nParts, aWidths));
CStatusBarCtrl::SetSimple
Especifica se um controle de barra de status exibe texto simples ou exibe todas as partes de controle definidas por uma chamada anterior para SetParts.
BOOL SetSimple(BOOL bSimple = TRUE);
Parâmetros
bSimple
[in] Sinalizador de tipo de exibição. Se esse parâmetro for TRUE, o controle exibirá texto simples; se for FALSE, exibirá várias partes.
Valor de retorno
Sempre retorna 0.
Comentários
Se o aplicativo alterar o controle de barra de status de não simples para simples, ou vice-versa, o sistema redesenhará imediatamente o controle.
CStatusBarCtrl::SetText
Define o texto na parte determinada de um controle de barra de status.
BOOL SetText(
LPCTSTR lpszText,
int nPane,
int nType);
Parâmetros
lpszTexto
Endereço de uma cadeia de caracteres terminada em nulo especificando o texto a ser definido. Se nType for SBT_OWNERDRAW, lpszText representará 32 bits de dados.
nPane
Índice baseado em zero da parte a ser definida. Se esse valor for 255, o controle de barra de status será considerado um controle simples com apenas uma parte.
nType
Tipo de operação de desenho. Confira a mensagem SB_SETTEXT para uma lista de valores possíveis.
Valor de retorno
Diferente de zero se bem-sucedido; caso contrário, zero.
Comentários
A mensagem invalida a parte do controle que foi alterada, fazendo com que ela exiba o novo texto quando o controle recebe a mensagem WM_PAINT.
Exemplo
VERIFY(m_wndSBC.SetText(_T("Text For Pane 1"), 1, 0));
CStatusBarCtrl::SetTipText
Define o texto da dica de ferramenta para um painel em uma barra de status.
void SetTipText(
int nPane,
LPCTSTR pszTipText);
Parâmetros
nPane
O índice baseado em zero do painel de barras de status para receber o texto da dica de ferramenta.
pszTipText
Um ponteiro para uma cadeia de caracteres que contém o texto da dica de ferramenta.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 SB_SETTIPTEXT, conforme descrito no SDK do Windows.
Exemplo
m_wndSBC.SetTipText(0, _T("This is Pane 0"));