Compartilhar 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 ajuda, clique em Tópicos de Ajuda no Menu de Ajuda". A barra de status é a área na parte inferior da janela que contém informações de texto e coordenadas da Ajuda.

captura de tela do aplicativo de pintura, com uma barra de status que contém dicas sobre a ajuda online

Esta seção inclui os tópicos a seguir.

Tipos e estilos

A posição padrão de uma barra 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 do cliente da janela pai.

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

Nota

Não é recomendável combinar os estilos CCS_TOP e SBARS_SIZEGRIP porque a alça de dimensionamento resultante não é funcional.

 

Tamanho e altura

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

O procedimento de janela ajusta automaticamente o tamanho da barra de status sempre que recebe uma mensagem WM_SIZE. Normalmente, quando o tamanho da janela pai é alterado, 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 de SB_GETBORDERS. A mensagem inclui o endereço de uma matriz de três elementos que recebe as larguras.

Barras de status Multiple-Part

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 de inteiros. 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 SB_SETTEXT, especificando o índice baseado em zero de uma parte, um endereço da cadeia de caracteres a ser desenhado 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, se tiver, 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 inserir caracteres de guia (\ t) no texto para centralizar ou alinhá-lo à direita. O texto à direita de um único caractere de guia é centralizado e o texto à direita de um segundo caractere de guia é alinhado à direita.

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

Se o aplicativo usar uma barra de status que tenha apenas uma parte, você poderá 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ção DrawStatusText. A função usa as mesmas técnicas para desenhar o status do procedimento de 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.

Barras de status Owner-Drawn

Você pode definir partes individuais de uma barra de status para serem partes desenhadas pelo proprietário. Usar essa técnica oferece mais controle do que você 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 de 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 parte. 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 parte. Para uma parte desenhada pelo proprietário de uma barra de status, DRAWITEMSTRUCT contém as informações a seguir.

Membro Descrição
CtlType Indefinido; não use.
CtlID Identificador de janela filho da barra de status.
itemID Índice baseado em zero da parte a ser desenhada.
itemAction Indefinido; não use.
itemState Indefinido; não use.
hwndItem Manipule para a barra de status.
hDC Manipule para 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é o próximo WM_PAINT. Aguardar a mensagem reduz a cintilação de 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 estiver no modo simples é mantida separadamente das cadeias de caracteres exibidas enquanto estiver no modo não simplificado. Isso significa que você pode colocar a janela no modo simples, definir seu texto e alternar de volta para o modo não simplificado sem que o texto do modo não simplificado 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 status de modo simples não dá suporte ao 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 classeSTATUSCLASSNAMEpredefinida.

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 da 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 alça de dimensionamento, fazendo com que o sistema exiba o cursor de dimensionamento. Se o cursor do mouse não estiver na alça de dimensionamento, a barra de status passará essa mensagem para a função deDefWindowProc.
WM_PAINT Pinta a região inválida da barra de status. Se o parâmetro wParam não forNULL, o controle pressupõe que o valor seja 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 na primeira parte de uma barra de status, usando a operação de desenho padrão (especificada como zero). Ele retornará TRUE se tiver êxito ou false caso contrário.
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.