Sobre controles de barras

Um controle de barra de barras atua como um contêiner para janelas filho. Ele pode conter uma ou mais bandas, e cada banda pode ter qualquer combinação de uma barra de pinça, um bitmap, um rótulo de texto e uma janela filho. Um aplicativo atribui uma janela filho, normalmente outro controle, a uma faixa de controle de barras. À medida que você reposiciona dinamicamente uma faixa de controle de barras, o controle de barras gerencia o tamanho e a posição da janela filho atribuída a essa faixa. Além disso, um aplicativo pode especificar um bitmap em segundo plano para uma banda e o controle de barras exibirá a janela filho da banda sobre o bitmap.

A captura de tela a seguir mostra um controle de barras que tem duas faixas. Um contém uma barra de ferramentas e o outro contém uma caixa de combinação. Ambas as bandas têm uma garra que permite que elas sejam movidas e redimensionadas.

screen shot of dialog box showing a rebar control with a band containing a toolbar and a band containing a combo box

Observação

O controle de barra de barras é implementado na versão 4.70 e posterior de Comctl32.dll.

 

Faixas de barras e Windows filho

Um aplicativo define as características de uma banda de barras usando as mensagens RB_INSERTBAND e RB_SETBANDINFO . Essas mensagens aceitam o endereço de uma estrutura REBARBANDINFO como o parâmetro lParam . Os membros da estrutura REBARBANDINFO definem as características de uma determinada banda. Para definir as características de uma banda, defina o membro cbsize para indicar o tamanho da estrutura, em bytes. Em seguida, defina o membro fMask para indicar quais membros da estrutura seu aplicativo está preenchendo.

Para atribuir uma janela filho a uma banda, inclua o sinalizador RBBIM_CHILD no membro fMask da estrutura REBARBANDINFO e, em seguida, defina o membro hwndChild como o identificador da janela filho. Os aplicativos podem definir a largura e a altura mínimas permitidas de uma janela filho nos membros cxMinChild e cyMinChild .

Quando um controle de barras é destruído, ele destrói todas as janelas filho atribuídas às faixas dentro dele. Para impedir que o controle destrua janelas filho atribuídas a suas bandas, remova as faixas enviando a mensagem RB_DELETEBAND e use a mensagem RB_SETPARENT para redefinir o pai para outra janela antes de destruir o controle de barras.

A interface do usuário do controle de barras

Todas as faixas de controle de barras podem ser redimensionadas, exceto aquelas que usam o estilo RBBS_FIXEDSIZE. Para redimensionar ou alterar a ordem das faixas dentro do controle, clique e arraste a barra de garras de uma banda. O controle de barras redimensiona e reposiciona automaticamente as janelas filho atribuídas às suas faixas. Além disso, você pode alternar o tamanho de uma banda clicando no texto da banda, se houver alguma.

Lista de imagens do controle de barras

Se um aplicativo estiver usando uma lista de imagens com um controle de barras, ele deverá enviar a mensagem RB_SETBARINFO antes de adicionar faixas ao controle. Essa mensagem aceita o endereço de uma estrutura REBARINFO como o parâmetro lParam . Antes de enviar a mensagem, prepare a estrutura REBARINFO definindo o membro cbSize para o tamanho da estrutura, em bytes. Em seguida, se o controle de barras exibir imagens nas bandas, defina o membro fMask como o sinalizador RBIM_IMAGELIST e atribua um identificador de lista de imagens ao membro himl . Se a barra de barras não usar imagens de banda, defina fMask como zero.

Redirecionamento de mensagens de controle de barras

Um controle de barra de barras encaminha todas as mensagens de janela WM_NOTIFY para a janela pai. Além disso, um controle de barras encaminha todas as mensagens enviadas a ele de janelas atribuídas a suas bandas, como WM_CHARTOITEM, WM_COMMAND e outras.