Encaixe e flutuante barras de ferramentas
A biblioteca Microsoft Foundation Class oferece suporte a barras de ferramentas acoplável.Uma barra de ferramentas acoplável pode ser anexada ou encaixada, para qualquer lado da sua janela pai, ou ele pode ser desanexado ou flutuado em sua própria janela mini-frame.Este artigo explica como usar barras de ferramentas acoplável em seus aplicativos.
Se você usar o Assistente de aplicativo para gerar o esqueleto do seu aplicativo, são solicitado escolher se deseja acoplável barras de ferramentas.Por padrão, o Assistente de aplicativo gera o código que executa três ações necessárias para colocar uma barra de ferramentas acoplável em seu aplicativo:
Ativar o encaixe em uma janela de quadro.
Ativar o encaixe de uma barra de ferramentas.
Ancorar a barra de ferramentas (para a janela de quadro).
Se qualquer uma dessas etapas estiverem faltando, o aplicativo exibirá uma barra de ferramentas padrão.As duas últimas etapas devem ser realizadas para cada barra de ferramentas acoplável em seu aplicativo.
Outros tópicos abordados neste artigo incluem:
A barra de ferramentas flutuante
Redimensionar dinamicamente a barra de ferramentas
Posições de quebra automática de configuração para uma barra de ferramentas Estilo fixo
Consulte o exemplo MFC geral DOCKTOOL para obter exemplos.
Ativando o encaixe em uma janela de quadro
Para encaixar barras de ferramentas em uma janela do quadro, a janela do quadro (ou destino) deve ser habilitado para permitir encaixe.Isso é feito usando o CFrameWnd::EnableDocking função, que leva um DWORD parâmetro é um conjunto de estilo bits indicando qual lado da janela quadro aceita encaixe.Se uma barra de ferramentas está prestes a ser encaixado e há vários lados poderia ser encaixado em, os lados indicado no parâmetro passado para EnableDocking usado na seguinte ordem: superior, inferior, esquerda, direita.Se você deseja ser capaz de ancorar o controle de barras em qualquer lugar, passe CBRS_ALIGN_ANY para EnableDocking.
Ativando o encaixe de uma barra de ferramentas
Após ter preparado o destino de encaixe, você deve preparar a barra de ferramentas (ou origem) de maneira semelhante.Chamar CControlBar::EnableDocking para cada barra de ferramentas que você deseja encaixar, especificar o destino lados para a barra de ferramentas deve encaixar.Se nenhum dos lados especificados na chamada para CControlBar::EnableDocking coincidir os lados habilitados para encaixe na janela do quadro, a barra de ferramentas não é possível encaixar — ele irá flutuar.Uma vez foi flutuada, ele permanece barra flutuante, não é possível encaixar a janela do quadro.
Se o efeito desejado é uma barra de ferramentas flutuante permanentemente, chame EnableDocking com um parâmetro de 0.Em seguida, chamar CFrameWnd::FloatControlBar.A barra de ferramentas permanece flutuante, definitivamente, não é possível encaixar em qualquer lugar.
Encaixe a barra de ferramentas
O framework chama CFrameWnd::DockControlBar quando o usuário tentar soltar a barra de ferramentas em um lado da janela do quadro que permite o encaixe.
Além disso, você pode chamar esta função a qualquer momento para encaixar barras de controle para a janela do quadro.Isso normalmente é feito durante a inicialização.Mais de uma barra de ferramentas pode ser encaixada em um lado específico da janela do quadro.
A barra de ferramentas flutuante
Separar uma acoplável barra de ferramentas da janela do quadro é chamado de barra de ferramentas flutuante.Chamar CFrameWnd::FloatControlBar para fazer isso.Especifique um estilo de alinhamento que determina se a barra de ferramentas flutuante é horizontal ou vertical, o ponto onde deve ser colocado e barra de ferramentas para ser flutuada.
A estrutura chama esta função quando o usuário arrasta uma barra de ferramentas fora de seu local encaixado e descarta-lo em um local onde o encaixe não está habilitado.Isso pode ser em qualquer lugar dentro ou fora da janela do quadro.Como com DockControlBar, você também pode chamar essa função durante a inicialização.
A implementação do MFC de barras de ferramentas acoplável não fornece alguns recursos estendidos encontrados em alguns aplicativos que oferecem suporte a barras de ferramentas acoplável.Recursos como barras de ferramentas personalizáveis não são fornecidos.
Redimensionar dinamicamente a barra de ferramentas
Como do Visual C++ versão 4.0, você pode tornar possível para os usuários do seu aplicativo para redimensionar barras de ferramentas flutuantes dinamicamente.Normalmente, uma barra de ferramentas tem uma longa forma linear, exibida horizontalmente.Mas você pode alterar a orientação da barra de ferramentas e sua forma.Por exemplo, quando o usuário encaixa uma barra de ferramentas contra 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 dimensionamento dinâmico como uma característica de barra de ferramentas.
Especifica dimensionamento fixo como uma característica de barra de ferramentas.
Para oferecer esse suporte, há dois novos estilos de barra de ferramentas para uso em suas chamadas para o CToolBar::Create função de membro.Elas são:
CBRS_SIZE_DYNAMIC barra de controle é dinâmica.
CBRS_SIZE_FIXED barra de controle é fixo.
O estilo de tamanho dinâmico permite que o usuário redimensionar a barra de ferramentas enquanto estiver flutuando, mas não enquanto ela estiver encaixada.A barra de ferramentas "quebra" onde necessário para alterar a forma como o usuário arrasta suas bordas.
O tamanho fixo estilo preserva os estados de quebra automática de uma barra de ferramentas, corrigindo a posição dos botões em cada coluna.Usuário do aplicativo não é possível alterar a forma da barra de ferramentas.Quebra a barra de ferramentas em locais designados, como locais de separadores entre os botões.Ele mantém essa forma seja a barra de ferramentas ancorada ou flutuante.O efeito é uma paleta fixa com várias colunas de botões.
Você também pode usar CToolBar::GetButtonStyle para retornar a um estado e um estilo para botões em barras de ferramentas.O estilo do botão determina como o botão aparece e como ele responde à entrada do usuário; o estado informa se o botão está em um estado disposto.
Configuração posições quebra automática de uma barra de ferramentas Estilo fixo
Uma barra de ferramentas com o tamanho fixo de estilo, designe a 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 sua janela de quadro principal 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 MFC geral DOCKTOOL mostra como usar funções de membro das classes CControlBar e CToolBar para gerenciar o layout dinâmico de uma barra de ferramentas.Consulte o arquivo EDITBAR.CPP em DOCKTOOL.