Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.
Este documento descreve os elementos de interface que foram introduzidos no Visual Studio 2008 SP1 e também descreve diferenças com a versão anterior da biblioteca.
A ilustração a seguir mostra um aplicativo que foi criado usando os novos elementos de interface.
Encaixe de janela
A funcionalidade de encaixe de janela se assemelha ao encaixe de janela que a interface gráfica do usuário do Visual Studio usa.
Barras de controle agora são painéis
As barras de controle agora são conhecidas como painéis e são derivadas da Classe CBasePane. Nas versões anteriores do MFC, a classe base das barras de controle era CControlBar.
A janela de quadro principal do aplicativo geralmente é representada pela classe CFrameWndEx ou pela classe CMDIFrameWndEx. O quadro principal é chamado de local de encaixe. Os painéis podem ter um dos três tipos de pais: um local de encaixe, uma barra de encaixe ou uma janela com minimoldura.
Há dois tipos de painéis: não redimensionáveis e redimensionáveis. Painéis redimensionáveis, como barras de status e barras de ferramentas, podem ser redimensionados usando divisores ou controles deslizantes. Painéis redimensionáveis podem formar contêineres (um painel pode ser encaixado em outro painel, criando um divisor entre eles). No entanto, painéis redimensionáveis não podem ser anexados (encaixados) às barras de encaixe.
Se o aplicativo usar painéis não redimensionáveis, derive-os da Classe CPane. Se seu aplicativo usar painéis redimensionáveis, derive-os da Classe CDockablePane
Local de encaixe
O local de encaixe (ou janela de quadro principal) tem todos os painéis e janelas com minimoldura em um aplicativo. O local de encaixe contém um membro CDockingManager. Esse membro mantém uma lista de todos os painéis que pertencem ao local de encaixe. A lista é ordenada para que os painéis criados nas bordas externas do local de encaixe sejam posicionados no início da lista. Quando a estrutura redesenha o local de encaixe, ela faz loop sobre essa lista e ajusta o layout de cada painel para incluir o retângulo delimitador atual do local de encaixe. Você pode chamar AdjustDockingLayout ou RecalcLayout quando precisar ajustar o layout de encaixe, e a estrutura redireciona a chamada para o gerenciador de encaixe.
Barras de encaixe
Cada janela de quadro principal pode posicionar barras de encaixe ao longo de suas bordas. Uma barra de encaixe é um painel que pertence a uma classe CDockSite. As barras de encaixe podem aceitar objetos derivados do CPane, como barras de ferramentas. Para criar barras de encaixe quando a janela de quadro principal for inicializada, chame EnableDocking. Para habilitar barras de ocultação automática, chame EnableAutoHideBars.
EnableAutoHideBars cria objetos CAutoHideDockSite e os posiciona ao lado de cada barra de encaixe.
Cada barra de encaixe é dividida em linhas de encaixe. As linhas de encaixe são representadas pela Classe CDockingPanesRow. Cada linha de encaixe contém uma lista de barras de ferramentas. Se um usuário encaixa uma barra de ferramentas ou move a barra de ferramentas de uma linha para outra dentro da mesma barra de encaixe, a estrutura cria uma nova linha e redimensiona a barra de encaixe adequadamente ou posiciona a barra de ferramentas em uma linha existente.
Janelas com minimoldura
Um painel flutuante reside em uma janela com minimoldura. As janelas de mini-quadro são representadas por duas classes: classe CMDITabInfo (que pode conter apenas um painel) e classe CMultiPaneFrameWnd (que pode conter vários painéis). Para tornar um painel flutuante em seu código, chame CBasePane::FloatPane. Depois que um painel estiver flutuante, a estrutura criará automaticamente uma janela com minimoldura, que passará a ser o pai do painel flutuante. Quando o painel flutuante se encaixa, a estrutura redefine seu pai e o painel flutuante se torna uma barra de encaixe (para barras de ferramentas) ou um local de encaixe (para painéis redimensionáveis).
Divisores de painel
Os divisores de painel (também chamados de controles deslizantes ou divisores) são representados pela Classe CPaneDivider. Quando um usuário encaixa um painel, a estrutura cria divisores de painel, independentemente de o painel ser encaixado no local do dock ou em outro painel. Quando um painel se encaixa no local de encaixe, o divisor de painel é chamado de divisor de painel padrão. O divisor de painel padrão é responsável pelo layout de todos os painéis de encaixe no local de encaixe. O gerenciador do dock mantém uma lista de divisores de painel padrão e uma lista de painéis. Os gerentes de docas são responsáveis pela disposição de todos os painéis de encaixe.
Contêineres
Todos os painéis redimensionáveis, quando encaixados uns aos outros, são mantidos em contêineres. Os contêineres são representados pela classe CPaneContainer. Cada contêiner tem ponteiros para o painel esquerdo, painel direito, subcontêiner esquerdo, subcontêiner direito e o divisor entre as partes esquerda e direita. (Esquerda e Direita não se referem a lados físicos, mas sim identificam os ramos de uma estrutura de árvore.) Dessa forma, podemos criar uma árvore de painéis e divisores e, portanto, obter layouts complexos de painéis que podem ser redimensionados juntos. A CPaneContainer classe mantém a árvore de contêineres; ela também mantém duas listas de painéis e deslizadores que residem nessa árvore. Os gerentes de contêiner de painel geralmente são inseridos em controles deslizantes padrão e janelas com minimoldura que carregam vários painéis.
Ocultar automaticamente barras de controle
Por padrão, cada um CDockablePane dá suporte ao recurso de ocultação automática. Quando um usuário clica no botão fixar na legenda do CDockablePane, a estrutura alterna o painel para o modo de ocultação automática. Para lidar com o clique, a estrutura cria uma classe CMFCAutoHideBar e uma classe CMFCAutoHideButton associada ao CMFCAutoHideBar objeto. A estrutura coloca o novo CMFCAutoHideBar no CAutoHideDockSite. A estrutura também anexa o CMFCAutoHideButton à barra de ferramentas. A classe CDockingManager mantém o CDockablePane.
Barras de controle com guias e barras do Outlook
A Classe CMFCBaseTabCtrl implementa a funcionalidade base de uma janela com guias desanexáveis. Para usar um CMFCBaseTabCtrl objeto, inicialize uma classe CBaseTabbedPane em seu aplicativo.
CBaseTabbedPane é fornecido a partir de CDockablePane e mantém um ponteiro para um objeto CMFCBaseTabCtrl. O CBaseTabbedPane permite que os usuários encaixem e redimensionem barras de controle com guia. Use CDockablePane::AttachToTabWnd para criar dinamicamente barras de controle encaixadas e com guia.
O controle da barra do Outlook também é baseado em barras de abas. A classe CMFCOutlookBar é derivada de CBaseTabbedPane. Para obter mais informações sobre como usar a barra do Outlook, consulte a Classe CMFCOutlookBar.