Compartilhar via


TN031: Barras de controle

Observação:

A seguinte nota técnica não foi atualizada desde que foi incluída pela primeira vez na documentação online.sistema autônomo resultado, alguns procedimentos e tópicos podem estar desatualizado ou incorreto.Para obter as informações mais recentes, é recomendável que você procura o t ÓPICO de interesse no índice de documentação online.

Esta nota descreve o BAR de controle classes no MFC: o GeralCControlBar, CStatusBar, CToolBar, CDialogBar, and CDockBar.

CControlBar

A ControlBar is a CWnd-derivada da classe que:

  • É alinhado à parte superior ou inferior de uma janela de quadro.

  • Pode conter itens filho que são um dos controles baseada no HWND (por exemplo, CDialogBar) ou não-HWND com base em itens (por exemplo, CToolBar, CStatusBar).

Barras de controle de suportam para estilos adicionais:

  • CBRS_TOP   (O padrão) fixar o BAR de controle na parte superior.

  • CBRS_BOTTOM   Pino de BAR de controle na parte inferior.

  • CBRS_NOALIGN   Não reposicione a BAR de controle quando o pai é redimensionado.

Classes derivadas de CControlBar fornecem implementações mais interessantes:

  • CStatusBar   A BAR de status, os itens são BAR de status painéis que contêm texto.

  • CToolBar   Uma barra de ferramentas, os itens são alinhados em uma linha de botões de bitmap.

  • CDialogBar   Um quadro semelhante a barra de ferramentas contendo janelas padrão controles (criados de um recurso de modelo de caixa de diálogo).

  • CDockBar   Uma área de encaixe generalizada para outros CControlBar objetos derivados. As funções de membro específico e variáveis disponível nesta classe provavelmente mudar em futuras versões.

Todos os BAR de controle objetos/janelas será janelas filho de alguns janela pai do quadro.Eles geralmente são adicionados sistema autônomo um irmão à área de cliente do quadro (por exemplo, um cliente MDI ou exibição).A ID da janela filho de um BAR de controle é importante.O layout padrão de BAR de controle funciona somente para BAR de controle s com IDs no intervalo de AFX_IDW_CONTROLBAR_FIRST to AFX_IDW_CONTROLBAR_LAST.Observe que, embora haja um intervalo de 256 BAR de controle IDs, o primeiro 32 destas identificações de BAR de controle especial desde que eles são suportados pela arquitetura de visualização de impressão.

The CControlBar classe fornece a implementação padrão para:

  • Alinhando o BAR de controle a parte superior, inferior ou ambos os lados do quadro.

  • Alocando controle arrays do item.

  • A implementação de classes derivadas de suporte.

C++ BAR de controle objetos normalmente serão incorporados sistema autônomo membros de um CFrameWnd classe derivada e será limpo quando o pai HWND e objeto serão destruídos. Se você precisar alocar um BAR de controle objetos no heap, você pode simplesmente conjunto o m_bAutoDestruct membro TRUE para tornar o BAR de controle "Excluir esta"quando o HWND é destruído.

Observação:

Se você criar seu próprio CControlBar-derivado de classe, em vez de usando um do MFC derivadas, sistema autônomo classes, CStatusBar, CToolBar, ou CDialogBar, você precisará conjunto o m_dwStyle membro de dados. Isso pode ser concluído na substituir de Criar:

// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
   m_dwStyle = dwStyle;

   .
   .
   .
}

Layout BAR de controle algoritmo

O BAR de controle algoritmo de layout é muito simples.A janela do quadro envia uma mensagem de WM_SIZEPARENT para Censura Livre no BAR de controle intervalo.Junto com essa mensagem é passado um ponteiro para o retângulo de cliente do pai.Esta mensagem é enviada para crianças na ordem Z.Os filhos de BAR de controle usar essas informações para se posicionam e para diminuir o dimensionar da área de cliente do pai.O retângulo final é deixado para a área de cliente normal (menos barras de controle) é usado para posicionar a janela cliente principal (geralmente um MDI cliente, do modo de exibição ou divisor janela).

See CWnd::RepositionBars e CFrameWnd::RecalcLayout Para obter mais detalhes.

MFC mensagens Windows particulares, incluindo WM_SIZEPARENT, documentadas no Observação técnica 24.

CStatusBar

A BAR de status é uma BAR de controle que tem uma linha de painéis de saída de texto.Há duas maneiras comuns de usar painéis de saída de texto:

  • sistema autônomo uma linha de mensagem

    (por exemplo, no menu padrão ajudar a linha de mensagem).Eles normalmente são acessados por um indexado baseado em 0

  • sistema autônomo indicadores de status

    (por exemplo, os CAP, NUM e SCRL indicadores).Eles normalmente são acessados por ID de comando/seqüência de caracteres.

A fonte para o BAR de status é 10 pontos MS Sans Serif (indicado pelo guia de design de aplicativo do Windows Interface ou fonte mappers melhor correspondência de uma fonte proporcional Suíça 10 pontos).Em determinadas versões do Windows, sistema autônomo a edição em japonês, sistema autônomo fontes selecionadas são diferentes.

As cores usadas no BAR de status também são consistentes com a recomendação do guia de design do Windows Interface aplicativo.Essas cores não são codificadas e são alteradas dinamicamente em resposta a personalização do usuário no painel de controle.

Item

Valor de COLOR do Windows

Padrão RGB

BAR de status plano de fundo

COLOR_BTNFACE

RGB (192, 192, 192)

BAR de status texto

COLOR_BTNTEXT

RGB (000, 000 000)

BAR de status bordas superior ou esquerda

COLOR_BTNHIGHLIGHT

RGB (255, 255, 255)

BAR de status bordas bot/direita

COLOR_BTNSHADOW

RGB (128, 128, 128)

Suporte a CCmdUI CStatusBar

A forma indicadores são atualizados geralmente é por meio do ON_UPDATE_COMMAND_UI mecanismo. time ocioso, a BAR de status será telefonar o ON_UPDATE_COMMAND_UI manipulador com a ID de seqüência de caracteres do painel de indicador.

The ON_UPDATE_COMMAND_UI manipulador pode chamar:

  • Ativar: Para ativar ou desabilitar o painel.Um painel desabilitado parece exatamente um painel ativado, mas o texto é invisível (ou seja, desativa o indicador de texto).

  • SetText: Para alterar o texto.Tenha cuidado se você usar isso porque o painel não será redimensionada automaticamente.

Consulte a classe CStatusBar in the Referência da biblioteca de classes para obter detalhes sobre CStatusBar criação e personalização APIs. A maioria dos personalização das barras de status deve ser feita antes que a BAR de status seja inicialmente feita visível.

O BAR de status suporta apenas um painel alongado, normalmente o primeiro painel.O dimensionar desse painel é realmente um dimensionar mínimo.Se o BAR de status é maior do que o dimensionar mínimo de todos os painéis, qualquer largura extra serão fornecidos para o painel alongado.O aplicativo padrão com uma BAR de status tem indicadores alinhado à direita para CAP, NUM e SCRL como o primeiro painel é alongado.

CToolBar

A BAR de ferramentas é uma BAR de controle com uma linha de botões de bitmap que possam conter separadores.Há suporte para dois estilos de botões: pushbuttons e botões da caixa de seleção.Funcionalidade de agrupar de opção pode ser montada com botões da caixa de seleção e ON_UPDATE_COMMAND_UI.

Todos os botões na barra de ferramentas de bitmap são tirados de um bitmap.Esse bitmap deve conter uma imagem ou glifo para cada botão.Normalmente a ordem de imagens/glifos no bitmap é a mesma ordem em que eles serão desenhados na tela.(Isso pode ser alterado usando a APIs de personalização.)

Cada botão deve ser do mesmo dimensionar.O padrão é os padrão 24 x 22 pixels.Cada imagem/glifo deve ser do mesmo dimensionar e deve estar lado a lado no bitmap.O dimensionar de imagem/glifo padrão é 15 x 16 pixels.Portanto, uma barra de ferramentas com 10 botões (usando o tamanho do papel), você precisa de um bitmap é 160 pixels de largura e 15 pixels de altura.

Cada botão possui uma única imagem/glifo.Estados de botão diferente e estilos (por exemplo, pressionado, up, para baixo, desabilitado, desabilitado para baixo, indeterminado) algorithmically são geradas a partir dessa imagem um/glifo.Qualquer bitmap de cor ou DIB pode ser usado na teoria.O algoritmo para gerar o botão diferente informa funciona melhor se a imagem original for tons de cinza.Examine os botões da barra de ferramentas padrão e o Clip-art do botão de barra de ferramentas fornecidas no MFC geral amostra CLIP-ART para obter exemplos.

As cores usadas na barra de ferramentas também são consistentes com a recomendação do guia de design do Windows Interface aplicativo.Essas cores não são codificadas e são alteradas dinamicamente em resposta a personalização do usuário no painel de controle.

Item

Valor de COLOR do Windows

Padrão RGB

Plano de fundo barra de ferramentas

COLOR_BTNFACE

RGB(192,192,192)

Botões de barra de ferramentas bordas superior ou esquerda

COLOR_BTNHIGHLIGHT

RGB(255.255.255)

Botões de barra de ferramentas bordas bot/direita

COLOR_BTNSHADOW

RGB(128.128.128)

Além disso, sistema autônomo botões da barra de ferramentas do bitmap são recoloridos sistema autônomo se fossem controles de botão padrão do Windows.Este Recolorir ocorre quando o bitmap é carregado do recurso e, em resposta a uma alterar nas cores do sistema em resposta a personalização do usuário no painel de controle.As seguintes cores em um bitmap da barra de ferramentas serão ser recoloridas automaticamente para que eles devem ser usados com cuidado.Se desejar ter uma parte do seu bitmap recolorido, em seguida, use uma cor que intimamente aproxima qual será um dos valores RGB mapeados.O mapeamento é concluído com base nos valores RGB exatas.

Valor RGB

Valor COLOR mapeado dinamicamente

RGB (000, 000 000)

COLOR_BTNTEXT

RGB (128, 128, 128)

COLOR_BTNSHADOW

RGB (192, 192, 192)

COLOR_BTNFACE

RGB (255, 255, 255)

COLOR_BTNHIGHLIGHT

Consulte a classe CToolBar the Referência da biblioteca de classes para obter detalhes sobre o CToolBar criação e personalização APIs. A maioria dos personalização das barras de ferramentas deve ser feita antes da barra de ferramentas esteja inicialmente visível.

A personalização APIs podem ser usadas para ajustar o botão identificações, estilos, largura de espaçador e qual imagem/glifo é usado para qual botão.Por padrão você não precisa usar essas APIs.

Suporte a CCmdUI CToolBar

A forma de botões da barra de ferramentas são sempre atualizadas é através de ON_UPDATE_COMMAND_UI mecanismo. time ocioso, a barra de ferramentas chamará o ON_UPDATE_COMMAND_UI manipulador com a ID de comando do botão. ON_UPDATE_COMMAND_UI não é chamado para separadores, mas ela é chamada para pushbuttons e botões da caixa de seleção.

The ON_UPDATE_COMMAND_UI manipulador pode chamar:

  • Ativar: Para ativar ou desabilitar o botão.Isso funciona igualmente para pushbuttons e botões da caixa de seleção.

  • SetCheck: Para conjunto o estado de seleção de um botão. Chamar isso para um botão de barra de ferramentas será transformá-lo em um botão de caixa de seleção.SetCheck leva um parâmetro que pode ser 0 (não marcado), 1 (marcado) ou 2 (indeterminado)

  • SetRadio: Forma abreviada de SetCheck.

Botões da caixa de seleção são botões da caixa de seleção de "AUTO"; ou seja, quando o usuário pressiona-las serão imediatamente alterar estado.Verificado é o estado pressionado ou para baixo.Não é possível interface de usuário internas para alterar um botão no estado "indeterminado"; que deve ser concluído por meio de código.

A personalização APIs permitirá que você alterar o estado de um determinado botão de barra de ferramentas, preferência, você deve alterar esses estados no ON_UPDATE_COMMAND_UI representa o manipulador para botão de barra de ferramentas de comando. Lembre-se de que o processamento ocioso alterará o estado dos botões da barra de ferramentas com o ON_UPDATE_COMMAND_UI manipulador, para que quaisquer alterações feitas nestes estados feitas por meio de SetButtonStyle podem obter perdidas após a próxima ocioso.

Botões da barra de ferramentas enviará WM_COMMAND mensagens normais botões ou itens de menu, como e normalmente são manipuladas por um ON_COMMAND manipulador de eventos da mesma classe que fornece o ON_UPDATE_COMMAND_UI manipulador.

Há quatro barra do botão estilos (valores TBBS_) usados para estados de exibição:

  • TBBS_CHECKED: caixa de verificação no momento está marcada (para baixo).

  • TBBS_INDETERMINATE: caixa de seleção estará desativada no momento.

  • TBBS_DISABLED: Botão está desabilitado no momento.

  • TBBS_PRESSED: Botão é pressionado no momento.

Os estilos de botão guia de design de aplicativo de interface do Windows oficiais seis são representados por valores TBBS a seguir:

  • Até = 0

  • Apertar mouse = TBBS_PRESSED (| qualquer Outros estilo)

  • desabilitado = TBBS_DISABLED

  • Desativada = TBBS_CHECKED

  • Para baixo desabilitado = TBBS_CHECKED | TBBS_DISABLED

  • Indeterminado = TBBS_INDETERMINATE

CDialogBar

A BAR de diálogo é uma BAR de controle que contém controles padrão do Windows.Ele atua como uma caixa de diálogo que contém os controles e oferece suporte a navegação por TAB entre elas.Também atua como uma caixa de diálogo que utiliza um modelo de caixa de diálogo para representar a BAR.

A CDialogBar é usado para a barra de ferramentas Visualizar impressão, que contém controles padrão do botão de pressão.

Usando um CDialogBar é como usar um CFormView. Você deve definir um modelo de caixa de diálogo para o BAR de diálogo e remova todos os estilos, exceto WS_CHILD.Observe que a caixa de diálogo deve ser visível.

As notificações de controle para um CDialogBar será enviado ao pai da BAR de controle (assim como botões da BAR de ferramentas).

Suporte a CCmdUI CDialogBar

BAR de diálogo botões devem ser atualizadas por meio de ON_UPDATE_COMMAND_UI mecanismo do manipulador. Em time de inatividade, a BAR da caixa de diálogo será telefonar o ON_UPDATE_COMMAND_UImanipulador com a ID de comando de todos os botões que possuem uma identificação > = 0 x 8000 (isto é, no intervalo de IDs de comando).

The ON_UPDATE_COMMAND_UI manipulador pode chamar:

  • Habilite: Para ativar ou desabilitar o botão.

  • SetText: Para alterar o texto do botão.

Personalização pode ser feita por meio de APIs do Gerenciador de janela padrão.

Consulte também

Outros recursos

Notas técnicas por número

Notas técnicas por categoria