Encaixando e barras de ferramentas flutuante
A biblioteca Microsoft Foundation classe suporta encaixáveis barras de ferramentas.Uma barra de ferramentas encaixáveis pode ser anexada ou encaixada, para qualquer lado da sua janela pai, ou pode ser desanexado, ou flutuar na própria janela minimoldura.Este artigo explica como usar barras de ferramentas encaixáveis em seus aplicativos.
Se você usar o Assistente de aplicativos para gerar o esqueleto do seu aplicativo, você será solicitado a escolher se deseja encaixáveis barras de ferramentas.Por padrão, o Assistente de aplicativo gera o código que executa as três ações necessárias para colocar uma barra de ferramentas encaixáveis em seu aplicativo:
Ativar o encaixe em uma janela de quadro.
Ativar encaixe de uma barra de ferramentas.
encaixar barra de ferramentas (para a janela do quadro).
Se qualquer uma dessas etapas estiverem faltando, o aplicativo irá exibir uma barra de ferramentas padrão.As duas últimas etapas devem ser executadas para cada barra de ferramentas encaixáveis em seu aplicativo.
Outros tópicos abordados neste artigo incluem:
A barra de ferramentas flutuante
Redimensionar dinamicamente a barra de ferramentas
Posições de encapsular de configuração para uma barra de ferramentas Estilo fixo
Consulte o exemplo de MFC geral DOCKTOOL para obter exemplos.
Ativar encaixe em uma janela de quadro
Para encaixar barras de ferramentas em uma janela do quadro, a janela do quadro (ou o destino) deve ser ativado para permitir encaixe.Isso é concluído usando o CFrameWnd::EnableDocking função, que leva um DWORD parâmetro que é um conjunto de bits de estilo que indica qual lado da janela do quadro aceita encaixe. Se uma barra de ferramentas está prestes a ser ancorada e há vários lados que pode ser encaixada para, os lados indicados no registro o parâmetro passado para EnableDocking são usadas em ordem a seguir: Top, bottom, left, right.Se você deseja ser capaz de ancorar as barras de controle em qualquer lugar, passar CBRS_ALIGN_ANY para EnableDocking.
Ativar encaixe de uma barra de ferramentas
Após preparar o destino de encaixe, você deve preparar a barra de ferramentas (ou fonte) de maneira semelhante. De telefonarCControlBar::EnableDocking para cada barra de ferramentas que você deseja encaixar, especificando os lados de destino ao qual deve encaixar a barra de ferramentas.Se nenhum dos lados especificados na telefonar para CControlBar::EnableDocking Coincidir lados habilitados para encaixe na janela do quadro, não é possível encaixar a barra de ferramentas — ela flutuará. Quando flutuante, ele permanece uma barra de ferramentas flutuante, não é possível encaixar a janela do quadro.
Se o efeito desejado é uma barra de ferramentas flutuante permanentemente, telefonar EnableDocking com um parâmetro de 0. Then telefonar CFrameWnd::FloatControlBar.A barra de ferramentas permanece flutuante, permanentemente, não é possível encaixar em qualquer lugar.
Encaixe a barra de ferramentas
A estrutura chama CFrameWnd::DockControlBar quando o usuário tentar soltar a barra de ferramentas em um lado da janela do quadro que permite que o encaixe.
Além disso, você pode telefonar essa função a qualquer momento para encaixar o controle de barras na janela do quadro.Normalmente, isso é concluído durante a inicialização.Mais de uma barra de ferramentas pode ser ancorada um lado específico da janela do quadro.
A barra de ferramentas flutuante
Desanexação de uma barra de ferramentas encaixáveis da janela do quadro é chamado a barra de ferramentas flutuante. De telefonarCFrameWnd::FloatControlBar para fazer isso.Especifique a barra de ferramentas para ser flutuante, o ponto onde deve ser colocado e um estilo de alinhamento que determina se a barra de ferramentas flutuante é horizontal ou vertical.
A estrutura chama esta função quando o usuário arrasta uma barra de ferramentas fora de seu local encaixado e ele cai em um local onde o encaixe não está habilitado.Isso pode estar em qualquer lugar dentro ou fora da janela do quadro.sistema autônomo ocorre com DockControlBar, você também pode chamar essa função durante a inicialização.
A implementação de MFC de barras de ferramentas encaixáveis não fornece alguns dos recursos estendidos encontrados em alguns aplicativos que oferecem suporte a barras de ferramentas acoplável.Recursos sistema autônomo barras de ferramentas personalizáveis não são fornecidos.
Redimensionar dinamicamente a barra de ferramentas
sistema autônomo do Visual C++ versão 4.0, você pode tornar possível para sistema autônomo usuários do seu aplicativo para redimensionar sistema autônomo barras de ferramentas flutuantes dinamicamente.Normalmente, uma barra de ferramentas tem uma forma longa e linear, exibida horizontalmente.Mas você pode alterar a orientação da barra de ferramentas e a sua forma.Por exemplo, quando o usuário encaixa uma barra de ferramentas em relação a um dos lados da janela de quadro verticais, a forma muda para um layout vertical.Também é possível redimensionar a barra de ferramentas em um retângulo com várias linhas de botões.
Você pode:
Especifica o dimensionamento dinâmico sistema autônomo uma característica de barra de ferramentas.
Especifica tamanho fixo sistema autônomo uma característica de barra de ferramentas.
Para oferecer esse suporte, existem dois novos estilos de barra de ferramentas para uso em suas chamadas para o CToolBar::criarfunção de membro .Elas são:
CBRS_SIZE_DYNAMIC BAR de controle é dinâmico.
CBRS_SIZE_FIXED BAR de controle é fixo.
O estilo de dimensionar dinâmico permite que seu usuário redimensionar a barra de ferramentas enquanto estiver flutuante, mas não enquanto ela estiver encaixada.A barra de ferramentas "quebra" onde for necessário para alterar a forma sistema autônomo o usuário arrasta suas bordas.
O dimensionar fixo estilo preserva os estados de encapsular de uma barra de ferramentas, corrigindo a posição de botões em cada coluna.Usuário do seu aplicativo não é possível alterar a forma da barra de ferramentas.A barra de ferramentas quebra em locais designados, sistema autônomo sistema autônomo locais dos separadores entre sistema autônomo botões.Ele mantém essa forma se a barra de ferramentas é encaixado ou flutuante.O efeito é uma paleta fixa com várias colunas de botões.
Você também pode usar CToolBar::GetButtonStyle para retornar um estado e o estilo dos botões nas barras de ferramentas do.Estilo do botão determina como o botão aparece como ele responde à entrada do usuário; o estado informa se o botão está em um estado empacotado.
Definindo encapsular Positions para uma barra de ferramentas Estilo fixo
Para uma barra de ferramentas com dimensionar fixo de estilo, designe barra de ferramentas índices de botão em que a barra de ferramentas irão quebrar.O código a seguir mostra como fazer isso na OnCreate substituir:
// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);
// Do the same for other wrap locations ...
// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
// Call docking/floating functions as needed ...
O exemplo de MFC geral DOCKTOOL mostra como usar funções de membro das classes CControlBar and CToolBar para gerenciar o layout dinâmico de uma barra de ferramentas.Consulte o arquivo EDITBAR.CPP em DOCKTOOL.