TN031: Barras de Controlarar

Esta anotação descreve as classes de barra de Controlarar no MFC: o geral CControlBar, CStatusBar, CToolBar, CDialogBare CDockBar.

CControlBar

Um ControlBar é um CWnd-derivado classe que:

Barras de Controlarar suportam os estilos adicionais:

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

Barra de controle todos os objetos/windows será filho windows de alguma janela do quadro pai. Eles geralmente são adicionados como um irmão para a área de cliente do quadro (por exemplo, um cliente MDI ou exibir). A identificação de janela filho de uma barra de Controlarar é importante. O layout padrão da barra de Controlarar só funciona para barras de Controlarar com identificações no intervalo de AFX_IDW_CONTROLBAR_FIRST para AFX_IDW_CONTROLBAR_LAST. Observe que, embora haja um intervalo de Controlarar de 256 barra identificações, 32 primeiro destes barra de Controlarar identificações são especiais uma vez que eles são diretamente suportados pela arquitetura de Visualizar de imprimir.

Classe CControlBar fornece uma implementação padrão para

Objetos de barra de Controlarar do C++ geralmente ser incorporados como membros de um CFrameWnd classe derivada e serão limpos quando o pai HWND e o objeto são destruídos. Se você precisar se alocar um objeto de barra de Controlarar na pilha, você pode simplesmente definir o membro de m_bAutoDestruct como TRUE para fazer o controle barra "Excluir este" quando o HWND é destruído.

Importa&ntenbsp;  Se você criar seu próprio CControlBar-classe derivada, em vez de usar um do MFC derivadas de classes, como CStatusBar, CToolBarou CDialogBar, você precisará definir o membro de dados m_dwStyle . Isso pode ser feito na Substituir de criar:

 / / CMyControlBar é derivado de CControlBar
BOOL CMyControlBar::Create (CWnd * pParentWnd, DWORD dwStyle, UI&NTnID)
{
 nbsp; m_dwStyle = dwStyle;

.
   .
   .
}

Algoritmo de Layout de barra de Controlarar

O algoritmo de layout de barra de Controlarar é muito simple. A janela do quadro envia uma mensagem WM_SIZEPARENT para todas as crianças no intervalo de barra de Controlarar. Junto com esta mensagem, é passado um ponteiro para o Retangular de cliente do pai. Esta mensagem é enviada para crianças na Z-ordem. As crianças de barra de Controlarar usam essas informações para se posicionar e para diminuir o tamanho da área de cliente do pai. O retângulo final que é deixado para a área de cliente normal (menos barras de Controlarar) é usado para posicionar a janela principal do cliente (geralmente um cliente, exibir ou divisor de janela MDI).

Consulte CWnd:: RepositionBars e CFrameWnd:: RecalcLayout para obter mais detalhes.

Mensagens do Windows particulares MFC, incluindo WM_SIZEPARENT, estão documentadas na técnico nota 24.

CStatusBar

Uma barra de status é uma barra de Controlarar que tem uma linha de painéis de saída de texto. Existem duas formas comuns de usar painéis de saída de texto:

A fonte para a barra de status é ponto 10 "MS Sans Serif" (ditado pelo guia de Design de aplicativo do Windows Interface ou a fonte mappers melhor correspondência de uma fonte proporcional Suíça 10 pontos). Em determinadas versões do Windows, tais como a edição japonesa e Windows 4.0, as fontes selecionadas são diferentes.

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

Item de Valor de cor Windows Padrão RGB
Fundo de barra de status COLOR_BTNFACE RGB (192, 192, 192)
Texto da barra de status COLOR_BTNTEXT RGB (000, 000, 000)
Barra de status superior/Esquerda bordas COLOR_BTNHIGHLIGHT RGB (255, 255, 255)
Barra de status bordas de bot/direito COLOR_BTNSHADOW RGB (128, 128, 128)

Suporte a CCmdUI CStatusBar

A forma como indicadores normalmente são atualizados é pelo mecanismo de ON_UPDATE_COMMAND_UI . No tempo ocioso, a barra de status irá chamar o manipulador de ON_UPDATE_COMMAND_UI com a identificação de Cadeia de caracteres do painel de indicador.

O manipulador de ON_UPDATE_COMMAND_UI pode chamar:

Por favor, consulte a classe CStatusBar na Referência de biblioteca de classes para obter mais detalhes sobre criação de CStatusBar e personalização APIs. A maioria dos personalização de barras de status deve ser feita antes a barra de status é inicialmente feita visível.

A barra de status suporta apenas um painel stretchy, normalmente o primeiro painel. O tamanho do painel que é realmente um tamanho mínimo. Se a barra de status é maior do que o tamanho mínimo de todos os painéis, qualquer largura extra terá para o painel stretchy. O aplicativo padrão com uma barra de status tem indicadores alinhadDireito para CAP, NUM e SCRL desde o primeiro painel é stretchy.

CToolBar

Uma barra de ferramentas é uma barra de Controlarar com uma linha de botões de bitmap que podem incluir separadores. Há suporte para dois estilos de botões: pushbuttons e botões de caixa de seleção. Funcionalidade de grupo de rádio pode ser montada com botões de caixa de Marcar e ON_UPDATE_COMMAND_UI.

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

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

Cada botão tem uma e apenas uma imagem/glifo. O botão diferente Estados e estilos (por exemplo, pressionado, acima de, para baixo, desativado, desabilitado para baixo, indeterminado) algorithmically gerados a partir de que uma imagem/glifo. Qualquer cor bitmap ou DIB pode ser usado em teoria. O algoritmo para gerar o botão diferente Estados funciona melhor se a imagem original for tons de cinza. Olhar para os botões de barra de ferramentas padrão e o clipart de botão de barra de ferramentas fornecidas na MFC geral exemplo CLIPART para exemplos.

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

Item de Valor de cor Windows Padrão RGB
Plano de fundo da barra de ferramentas COLOR_BTNFACE RGB(192,192,192)
Barra de ferramentas botões cima/Esquerda bordas COLOR_BTNHIGHLIGHT RGB(255,255,255)
Barra de ferramentas botões bordas de bot/direito COLOR_BTNSHADOW RGB(128,128,128)

Além disso, os botões de bitmap da barra de ferramentas estão recoloridos como se fossem controles de botão padrão do Windows. Este Recolorir ocorre quando o bitmap é carregado no recurso e em resposta a uma mudança de cores do sistema em resposta a personalização do usuário através do painel de controle. As seguintes cores de um bitmap da barra de ferramentas serão ser recoloridas automaticamente assim que deve ser usados com cautela. Se você não deseja ter uma parte do seu bitmap recolorido, em seguida, use uma cor que se aproxima um dos valores RGB mapeados. O mapeamento é feito com base em valores RGB exatos.

Valor RGB Valor cor 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

Por favor, consulte classe CToolBar a Referência à biblioteca classe para obter detalhes sobre a criação de CToolBar e personalização APIs. A maioria dos personalização de barras de ferramentas deve ser feita antes a barra de ferramentas é inicialmente feita visível.

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

Suporte a CCmdUI CToolBar

A forma da barra de ferramentas botões são sempre atualizadas é através do mecanismo ON_UPDATE_COMMAND_UI . No tempo ocioso, a barra de ferramentas irá chamar o manipulador de ON_UPDATE_COMMAND_UI com a identificação de comando do botão. ON_UPDATE_COMMAND_UI não é chamado para os separadores, mas ele é chamado para pushbuttons e botões de caixa de seleção.

O manipulador de ON_UPDATE_COMMAND_UI pode chamar:

Caixa de verificação botões são botões de caixa de seleção "AUTO"; ou seja, quando o usuário pressiona-los imediatamente mudarão estado. Marcado é o estado para baixo ou deprimido. Não há nenhuma maneira de interface de usuário internas para alterar um botão para o estado "indeterminado"; que deve ser feito através de código.

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

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

Existem quatro estilos de botão de barra de ferramentas (valores TBBS_) usados para Estados de exibição:

Os seis estilos de botão oficiais guia de Design de aplicativo do Windows Interface são representados pelos seguintes valores TBBS:

CDialogBar

Uma barra de caixa de diálogo é uma barra de Controlarar 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. Ele também atua como uma caixa de diálogo em que ele usa um modelo de diálogo para representar a barra.

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

Usar um CDialogBar é como usar um CFormView. Você deve definir um modelo de diálogo para a barra de caixa de diálogo e remover todos os estilos exceto WS_CHILD. Observe que a caixa de diálogo não deve ser visível.

As notificações de Controlarar para um CDialogBar serão enviadas para o pai da barra de controles (como botões de barra de ferramentas).

Suporte a CCmdUI CDialogBar

Botões da barra de caixa de diálo&go devem ser actualizados através do mecanismo de manipulador ON_UPDATE_COMMAND_UI . Em tempo ocioso, a barra de caixa de diálogo chamará o manipulador de ON_UPDATE_COMMAND_UI com a identificação de comando de todos os botões que possuem um ID gt; = 0 x 8000 (isto é, no intervalo de IDs de comando).

O manipulador de ON_UPDATE_COMMAND_UI pode chamar:

A personalização pode ser feita através do Gerenciador de janela padrão APIs.

Técnico anotações por número |nbsp; &Notas técnicas por categoria

Index