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.
Esta seção inclui os tópicos a seguir.
- tipos e estilos
- tamanho e altura
- barras de status Multiple-Part
- operações de texto da barra de status
- barras de status Owner-Drawn
- barras de status do modo simples
- de Processamento de Mensagens da Barra de Status Padrão
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.