Compartilhar via


Encaixando e flutuando barras de ferramentas

A biblioteca de classes do Microsoft oferece suporte às barras de ferramentas encaixáveis. Uma barra de ferramentas encaixável pode ser anexado, ou logon, a qualquer lado da janela pai, ou a ele pode ser desanexado, ou flutuado, em sua própria janela de mini- quadro. 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 escolha se você deseja barras de ferramentas encaixáveis. Por padrão, o assistente de aplicativo gerencia o código que executa três ações necessárias coloque uma barra de ferramentas encaixável em seu aplicativo:

  • Habilitar o encaixe em uma janela do quadro.

  • Habilitar o encaixe de uma barra de ferramentas.

  • Encaixe a barra de ferramentas (à janela do quadro).

Se qualquer uma dessas etapas estiverem ausentes, o aplicativo exibe 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:

  • Flutuando a barra de ferramentas

  • Redimensionando dinamicamente a barra de ferramentas

  • Definindo as posições de quebra automática para uma barra de ferramentas de estilo fixa

Consulte o exemplo DOCKTOOL gerais de MFC para obter exemplos.

Habilitando o encaixe em uma janela do quadro

Para as barras de ferramentas a uma janela do quadro, a janela do quadro ou (o destino) devem ser habilitados para permitir logon. Isso é feito usando a função de CFrameWnd::EnableDocking , que assume um parâmetro de DWORD que é um conjunto de indicação os bits de estilo que o lado da janela do quadro aceita o encaixe. Se uma barra de ferramentas está prestes a ser inserida e houver vários lados que pode ser feito logon no, os lados indicados no parâmetro passado a EnableDocking são usados na seguinte ordem: parte superior, inferior, à esquerda, direita. Se você deseja poder entre barras de controle em qualquer lugar, passe CBRS_ALIGN_ANY a EnableDocking.

Habilitando o encaixe de uma barra de ferramentas

Após preparar o destino do logon, você deve preparar a barra de ferramentas (ou a origem) de uma maneira semelhante. Chame CControlBar::EnableDocking para cada barra de ferramentas que você deseja inserir, especificando os lados de destino à qual a barra de ferramentas deve fazer logon. Se nenhum dos lados especificados na chamada à correspondência de CControlBar::EnableDocking os lados habilitados digitando na janela do quadro, a barra de ferramentas não podem efetuar logon — flutuarão. Uma vez que foi flutuado, ele permanecerá uma barra de ferramentas flutuante, conseguir fazer logon na janela do quadro.

Se o efeito desejado é uma barra de ferramentas permanentemente flutuante, chama EnableDocking com um parâmetro de 0. Em CFrameWnd::FloatControlBarchamada. A barra de ferramentas permaneça float, permanentemente não é possível fazer em qualquer lugar.

Registrando a barra de ferramentas

A estrutura chama CFrameWnd::DockControlBar quando o usuário tenta remover a barra de ferramentas em um lado da janela do tableau que permite fazer logon.

Além disso, você pode chamar essa função a qualquer momento para as barras de controle para a janela do quadro. Isso é feito normalmente durante a inicialização. Mais de uma barra de ferramentas pode ser entrada para um lado específico da janela do quadro.

Flutuando a barra de ferramentas

Desanexando uma barra de ferramentas encaixável da janela do quadro é chamado flutuando a barra de ferramentas. Chame CFrameWnd::FloatControlBar para fazer isso. Especifique a barra de ferramentas a ser flutuados, o ponto onde deve ser colocada, e um estilo de alinhamento que determina se a barra de ferramentas de flutuação é horizontal ou vertical.

A estrutura chamará essa função quando um usuário arrasta uma barra de ferramentas fora de seu local digitado solta-a em um local em que o logon 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 de MFC de barras de ferramentas encaixáveis não fornece alguns dos recursos estendidos localizados em alguns aplicativos que dão suporte a barra de ferramentas encaixáveis. Os recursos como barras de ferramentas e não forem fornecidos.

Redimensionando dinamicamente a barra de ferramentas

A partir da versão 4,0 do Visual C++, você pode torná-la possível para usuários de seu aplicativo redimensionar dinamicamente barras de ferramentas flutuante. Normalmente, uma barra de ferramentas tem uma forma longa, linear, exibidas horizontalmente. Mas você pode alterar a forma da barra de ferramentas orientação e. Por exemplo, quando o usuário insere uma barra de ferramentas em um dos lados verticais da janela do quadro, a forma é alterado para um layout vertical. Também é possível refazer a barra de ferramentas em um retângulo com várias linhas de botões.

Você pode:

  • Especifique o tamanho dinâmica como uma característica da barra de ferramentas.

  • Especifique o tamanho fixo como uma característica da barra de ferramentas.

Para fornecer esse suporte, há dois novos estilos da barra de ferramentas para uso em seus chamadas para a função de membro de CToolBar::Create . Elas são:

  • A barra de controle deCBRS_SIZE_DYNAMICé dinâmico.

  • A barra de controle deCBRS_SIZE_FIXEDé fixa.

O estilo dinâmico de tamanho permite que o usuário redimensionar a barra de ferramentas a serem flutuantes, mas não quando estiver conectado. A barra de ferramentas “envolve” onde necessário deformar como os arrastos as bordas do usuário.

O estilo tamanho fixo preserva os estados de quebra automática de uma barra de ferramentas, corrigir a posição dos botões em cada coluna. O usuário do aplicativo não pode alterar a forma da barra de ferramentas. Encapsula na barra de ferramentas em locais criados, como os locais dos separadores entre os botões. Mantém essa forma se a barra de ferramentas será entrada ou float. O efeito é uma paleta fixa com várias colunas dos botões.

Você também pode usar CToolBar::GetButtonStyle para retornar um estado e um estilo dos botões em suas barras de ferramentas. O estilo de um botão determina como o botão é exibido e como responder à entrada do usuário; o estado indica se o botão está em um estado ajustado.

Definindo as posições de quebra automática para uma barra de ferramentas de estilo fixa

Para uma barra de ferramentas com o estilo tamanho fixo, os índices criados no botão na barra de ferramentas na barra de ferramentas envolverão. O código a seguir mostra como fazer isso na substituição de OnCreate da janela do 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 ...

Mostra de DOCKTOOL de exemplo gerais de MFC 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.

Que você deseja saber mais?

Consulte também

Conceitos

Implementação da barra de ferramentas MFC