Partilhar via


Barras de status (controles do Windows)

Uma barra de status é uma janela horizontal na parte inferior de uma janela pai na qual um aplicativo pode exibir vários tipos de informações de status. A barra de status pode ser dividida em partes para exibir mais de um tipo de informação. A captura de tela a seguir mostra a barra de status no aplicativo Microsoft Windows Paint. Nesse caso, a barra de status contém o texto "Para obter ajuda, clique em tópicos da ajuda no menu Ajuda". A barra de status é a área na parte inferior da janela que contém o texto da Ajuda e as informações de coordenadas.

captura de tela do aplicativo paint, com uma barra de status que contém dicas sobre a ajuda on-line

Esta seção inclui os seguintes tópicos.

Tipos e estilos

A posição padrão de uma barra de status está na parte inferior da janela pai, mas você pode especificar o estilo CCS_TOP para que ela apareça na parte superior da área do cliente da janela pai.

Você pode especificar o estilo SBARS_SIZEGRIP para incluir uma pega de dimensionamento na extremidade direita da barra de status.

Observação

A combinação dos estilos CCS_TOP e SBARS_SIZEGRIP não é recomendada porque a pega de dimensionamento resultante não é funcional.

 

Tamanho e Altura

O procedimento de janela para a barra de status define automaticamente o tamanho inicial e a posição da janela, ignorando os valores especificados na funçãoCreateWindowEx. A largura é a mesma da área do cliente da janela pai. A altura é baseada nas métricas da fonte que está atualmente selecionada no contexto do dispositivo da barra de status e na largura das bordas da janela.

O procedimento da janela ajusta automaticamente o tamanho da barra de status sempre que recebe uma mensagem WM_SIZE. Normalmente, quando o tamanho da janela pai muda, o pai envia uma mensagem WM_SIZE para a barra de status.

Um aplicativo pode definir a altura mínima da área de desenho de uma barra de status enviando à janela uma mensagem SB_SETMINHEIGHT, especificando a altura mínima, em pixels. A área de desenho não inclui as bordas da janela. Uma altura mínima é útil para desenhar em uma barra de status desenhada pelo proprietário. Para obter mais informações, consulte Owner-Drawn Barras de status mais adiante neste capítulo.

Você recupera as larguras das bordas de uma barra de status enviando à janela uma mensagem SB_GETBORDERS. A mensagem inclui o endereço de uma matriz de três elementos que recebe as larguras.

Multiple-Part Barras de Estado

Uma barra de status pode ter muitas partes diferentes, cada uma exibindo uma linha de texto diferente. Você divide uma barra de status em partes enviando à janela uma mensagem SB_SETPARTS, especificando o número de partes a serem criadas e o endereço de uma matriz inteira. A matriz contém um elemento para cada parte, e cada elemento especifica a coordenada do cliente da borda direita de uma parte.

Uma barra de status pode ter um máximo de 256 partes, embora os aplicativos normalmente usem muito menos do que isso. Você recupera uma contagem das partes em uma barra de status, bem como a coordenada da borda direita de cada parte, enviando à janela uma mensagem SB_GETPARTS.

Operações de texto da barra de status

Você define o texto de qualquer parte de uma barra de status enviando a mensagem de SB_SETTEXT, especificando o índice baseado em zero de uma parte, um endereço da cadeia de caracteres a ser desenhada na parte e a técnica para desenhar a cadeia de caracteres. A técnica de desenho determina se o texto tem uma borda e, em caso afirmativo, o estilo da borda. Ele também determina se a janela pai é responsável por desenhar o texto. Para obter mais informações, consulte a seção Owner-Drawn Barras de Status abaixo.

Por padrão, o texto é alinhado à esquerda dentro da parte especificada de uma barra de status. Você pode incorporar caracteres de tabulação (\ t) no texto para centralizá-lo ou alinhá-lo à direita. O texto à direita de um único caractere de tabulação é centralizado e o texto à direita de um segundo caractere de tabulação é alinhado à direita.

Para recuperar texto de uma barra de status, use o SB_GETTEXTLENGTH e SB_GETTEXT mensagens.

Se seu aplicativo usa uma barra de status que tem apenas uma parte, você pode usar as mensagens WM_SETTEXT, WM_GETTEXTe WM_GETTEXTLENGTH para executar operações de texto. Essas mensagens lidam apenas com a parte que tem um índice de zero, permitindo que você trate a barra de status como um controle de texto estático.

Para exibir uma linha de status sem criar uma barra de status, use a funçãoDrawStatusText. A função usa as mesmas técnicas para desenhar o status como o procedimento da janela para a barra de status, mas não define automaticamente o tamanho e a posição das informações de status. Ao chamar a função, você deve especificar o tamanho e a posição das informações de status, bem como o contexto do dispositivo da janela na qual desenhá-la.

Owner-Drawn Barras de Estado

Você pode definir partes individuais de uma barra de status como partes desenhadas pelo proprietário. A utilização desta técnica dá-lhe mais controlo do que teria sobre a aparência da parte da janela. Por exemplo, você pode exibir um bitmap em vez de texto ou desenhar texto usando uma fonte diferente.

Para definir uma parte da janela como desenhada pelo proprietário, envie a mensagem SB_SETTEXT para a barra de status, especificando a parte e a técnica de desenho SBT_OWNERDRAW. Quando SBT_OWNERDRAW é especificado, o parâmetro lParam é um valor definido pelo aplicativo de 32 bits que o aplicativo pode usar ao desenhar a peça. Por exemplo, você pode especificar um identificador de fonte, um identificador de bitmap, um endereço de uma cadeia de caracteres e assim por diante.

Quando uma barra de status precisa desenhar uma parte desenhada pelo proprietário, ela envia a mensagem WM_DRAWITEM para a janela pai. O parâmetro wParam da mensagem é o identificador da janela filho da barra de status e o parâmetro lParam é o endereço de uma estruturaDRAWITEMSTRUCT. A janela pai usa as informações na estrutura para desenhar a peça. Para uma parte desenhada pelo proprietário de uma barra de status, DRAWITEMSTRUCT contém as seguintes informações.

Membro Descrição
CtlType Indefinido; Não utilize.
CtlID Identificador de janela filho da barra de status.
itemID Índice de base zero da parte a ser sorteada.
itemAction Indefinido; Não utilize.
itemState Indefinido; Não utilize.
hwndItem Manipule a barra de status.
hDC Manipule o contexto do dispositivo da barra de status.
rcItem Coordenadas da parte da janela a ser desenhada. As coordenadas são relativas ao canto superior esquerdo da barra de status.
itemData Valor de 32 bits definido pelo aplicativo especificado no parâmetro lParam da mensagem SB_SETTEXT.

 

Barras de status do modo simples

Você coloca uma barra de status no "modo simples" enviando-lhe uma mensagem SB_SIMPLE. Uma barra de status de modo simples exibe apenas uma parte. Quando o texto da janela é definido, a janela é invalidada, mas não é redesenhada até a próxima WM_PAINT. Esperar pela mensagem reduz a cintilação da tela, minimizando o número de vezes que a janela é redesenhada. Uma barra de status de modo simples é útil para exibir o texto da Ajuda para itens de menu enquanto o usuário está rolando pelo menu.

A cadeia de caracteres que uma barra de status exibe enquanto está no modo simples é mantida separadamente das cadeias de caracteres que ela exibe enquanto está no modo não simples. Isso significa que você pode colocar a janela no modo simples, definir seu texto e voltar para o modo não simples sem que o texto do modo não simples seja alterado.

Ao definir o texto de uma barra de status de modo simples, você pode especificar qualquer técnica de desenho, exceto SBT_OWNERDRAW. Uma barra de estado de modo simples não suporta o desenho do proprietário.

Processamento de mensagens da barra de status padrão

Esta seção descreve as mensagens manipuladas pelo procedimento de janela para a classeSTATUSCLASSNAME predefinida.

Mensagem Processamento padrão
WM_CREATE Inicializa a barra de status.
WM_DESTROY Libera recursos alocados para a barra de status.
WM_GETFONT Retorna o identificador para a fonte atual com a qual a barra de status desenha seu texto.
WM_GETTEXT Copia o texto da primeira parte de uma barra de status para um buffer. Ele retorna um valor de 32 bits que especifica o comprimento, em caracteres, do texto e a técnica usada para desenhar o texto.
WM_GETTEXTLENGTH Retorna um valor de 32 bits que especifica o comprimento, em caracteres, do texto na primeira parte de uma barra de status e a técnica usada para desenhar o texto.
WM_NCHITTEST Retorna o valor HTBOTTOMRIGHT se o cursor do mouse estiver na pega de dimensionamento, fazendo com que o sistema exiba o cursor de dimensionamento. Se o cursor do mouse não estiver na pega de dimensionamento, a barra de status passará essa mensagem para a funçãoDefWindowProc.
WM_PAINT Pinta a região inválida da barra de status. Se o parâmetro wParam for não-NULL, o controle assumirá que o valor é um HDC e pintará usando esse contexto de dispositivo.
WM_SETFONT Seleciona o identificador de fonte no contexto do dispositivo para a barra de status.
WM_SETTEXT Copia o texto especificado para a primeira parte de uma barra de status, usando a operação de desenho padrão (especificada como zero). Ele retorna TRUE se for bem-sucedido, ou FALSE de outra forma.
WM_SIZE Redimensiona a barra de status com base na largura atual da área do cliente da janela pai e na altura da fonte atual da barra de status.