Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Microsoft Foundation Class Library suporta barras de ferramentas encaixáveis. Uma barra de ferramentas encaixável pode ser anexada, ou encaixada, a qualquer lado de sua janela pai, ou pode ser destacada, ou flutuada, em sua própria janela de miniquadro. Este artigo explica como usar barras de ferramentas encaixáveis em seus aplicativos.
Se você usar o Assistente de aplicativo para gerar o esqueleto do seu aplicativo, você será solicitado a escolher se deseja barras de ferramentas encaixáveis. 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ável em seu aplicativo:
Se alguma dessas etapas estiver faltando, seu aplicativo exibirá uma barra de ferramentas padrão. As duas últimas etapas devem ser executadas para cada barra de ferramentas encaixável em seu aplicativo.
Outros tópicos abordados neste artigo incluem:
Consulte o exemplo geral MFC DOCKTOOL para obter exemplos.
Ativando o encaixe em uma janela de quadro
Para encaixar barras de ferramentas numa janela de moldura, a janela de moldura (ou destino) deve estar ativada para permitir o encaixe. Isso é feito usando a função CFrameWnd::EnableDocking , que usa um parâmetro DWORD 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 encaixada e há vários lados nos quais ela pode ser encaixada, os lados indicados no parâmetro passado para EnableDocking são usados na seguinte ordem: superior, inferior, esquerda, direita. Se você quiser ser capaz de encaixar barras de controle em qualquer lugar, passe CBRS_ALIGN_ANY para EnableDocking.
Ativando o encaixe para uma barra de ferramentas
Depois de preparar o destino para encaixe, deves preparar a barra de ferramentas (ou fonte) de forma semelhante. Chame CControlBar::EnableDocking para cada barra de ferramentas que você deseja encaixar, especificando os lados de destino aos quais a barra de ferramentas deve encaixar. Se nenhum dos lados especificados na chamada corresponder aos CControlBar::EnableDocking lados habilitados para acoplamento na janela do quadro, a barra de ferramentas não poderá acoplar — ela flutuará. Uma vez que tenha sido flutuado, permanece uma barra de ferramentas flutuante, incapaz de encaixar na janela do quadro.
Se o efeito desejado for uma barra de ferramentas permanentemente flutuante, chame EnableDocking com um parâmetro de 0. Em seguida, chame CFrameWnd::FloatControlBar. A barra de ferramentas permanece flutuante, permanentemente incapaz de atracar em qualquer lugar.
Encaixar a barra de ferramentas
A estrutura chama CFrameWnd::DockControlBar quando o utilizador tenta soltar a barra de ferramentas num lado da janela de quadro que permite o encaixe.
Além disso, você pode chamar essa função a qualquer momento para encaixar barras de controle na janela do quadro. Isso normalmente é feito durante a inicialização. Mais de uma barra de ferramentas pode ser encaixada em um lado particular da janela de moldura.
Flutuando a barra de ferramentas
Separar uma barra de ferramentas encaixável da janela de moldura é chamado de fazê-la flutuar. Chame CFrameWnd::FloatControlBar para fazer isso. Especifique a barra de ferramentas a ser flutuada, o ponto onde ela deve ser colocada e um estilo de alinhamento que determine se a barra de ferramentas flutuante é horizontal ou vertical.
A estrutura chama esta função quando um utilizador arrasta uma barra de ferramentas para fora do seu local acoplado e a larga num local onde não é possível acoplar. Isso pode ser em qualquer lugar dentro ou fora da janela do quadro. Assim como no DockControlBar, você também pode chamar essa função durante a inicialização.
A implementação MFC de barras de ferramentas encaixáveis não fornece alguns dos recursos estendidos encontrados em alguns aplicativos que suportam barras de ferramentas encaixáveis. Recursos como barras de ferramentas personalizáveis não são fornecidos.
Redimensionamento dinâmico da barra de ferramentas
A partir do Visual C++ versão 4.0, você pode tornar possível para os usuários do seu aplicativo redimensionar 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 sua forma. Por exemplo, quando o usuário encaixa uma barra de ferramentas em um dos lados verticais da janela do quadro, a forma muda para um layout vertical. Também é possível remodelar a barra de ferramentas em um retângulo com várias linhas de botões.
É possível:
Especifique o dimensionamento dinâmico como uma característica da barra de ferramentas.
Especifique o dimensionamento fixo como uma característica da barra de ferramentas.
Para fornecer este apoio, há dois novos estilos de barra de ferramentas para uso em suas chamadas da função membro CToolBar::Create. Eles são:
CBRS_SIZE_DYNAMIC A barra de controlo é dinâmica.
CBRS_SIZE_FIXED A barra de controle é fixa.
O estilo dinâmico de tamanho permite que o utilizador redimensione a barra de ferramentas enquanto ela está flutuando, mas não enquanto ela está encaixada. A barra de ferramentas adapta-se conforme necessário para mudar de forma à medida que o utilizador arrasta as suas margens.
O estilo de tamanho fixo preserva os estados de contorno de uma barra de ferramentas, fixando a posição dos botões em cada coluna. O usuário do aplicativo não pode alterar a forma da barra de ferramentas. A barra de ferramentas é encapsulada em locais designados, como os locais dos separadores entre os botões. Ele mantém essa forma quer a barra de ferramentas esteja encaixada 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 estilo para botões em suas barras de ferramentas. O estilo de um 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 encapsulado.
Configuração das posições de quebra de linha para uma barra de ferramentas Fixed-Style
Para uma barra de ferramentas com o estilo de tamanho fixo, designe os índices dos botões da barra de ferramentas nos quais a barra de ferramentas será dividida. O código a seguir mostra como fazer isso na sobrescrita da janela do OnCreate quadro principal.
// 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 geral MFC 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.