Elementos da interface

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Este documento descreve elementos de interface que foram introduzidos no Visual Studio 2008 SP1 e também descreve as 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.

Aplicação de exemplo MFC Feature Pack.

Acoplamento de janelas

A funcionalidade de encaixe de janela é semelhante ao encaixe de janela que a interface gráfica do usuário do Visual Studio usa.

As barras de controlo agora são painéis

As barras de controle agora são conhecidas como painéis e são derivadas da classe CBasePane. Em versões anteriores do MFC, a classe base de barras de controle era CControlBar.

A janela do quadro principal do aplicativo é geralmente representada pela classe CFrameWndEx ou pela classe CMDIFrameWndEx. A estrutura principal é chamada de área de encaixe. Os painéis podem ter um de três tipos de progenitores: uma zona de encaixe, uma barra de encaixe, ou uma janela de moldura reduzida.

Existem dois tipos de painéis: não ajustáveis e ajustáveis. Os 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, os painéis redimensionáveis não podem ser anexados (encaixados) às barras de encaixe.

Se seu aplicativo usa painéis não redimensionáveis, derive-os da Classe CPane. Se seu aplicativo usa painéis redimensionáveis, derive-os da classe CDockablePane

Local de Doca

O site do dock (ou janela do quadro principal) possui todos os painéis e janelas de miniquadros em um aplicativo. O site do dock contém um membro CDockingManager . Este membro mantém uma lista de todos os painéis que pertencem ao site do dock. A lista é ordenada para que os painéis criados nas bordas externas do site do dock sejam posicionados no início da lista. Quando a estrutura redesenha o site do dock, ele faz um loop sobre essa lista e ajusta o layout de cada painel para incluir o retângulo delimitador atual do site do dock. Você pode chamar AdjustDockingLayout ou RecalcLayout quando tiver que ajustar o layout de encaixe, e o framework redireciona essa chamada para o gestor de encaixe.

Barras de doca

Cada janela do quadro principal pode posicionar as barras de doca ao longo das suas bordas. Uma barra de dock é um painel que pertence a uma classe CDockSite. As barras de dock podem aceitar objetos derivados do CPane, como barras de ferramentas. Para criar barras de encaixe quando a janela principal for inicializada, chame EnableDocking. Para ativar a ocultação automática de barras, chame EnableAutoHideBars. EnableAutoHideBars cria objetos CAutoHideDockSite e os posiciona ao lado de cada barra de dock.

Cada barra de doca é dividida em linhas de doca. As linhas de dock são representadas pela classe CDockingPanesRow. Cada linha de dock contém uma lista de barras de ferramentas. Se um usuário encaixar uma barra de ferramentas ou mover a barra de ferramentas de uma linha para outra dentro da mesma barra de dock, a estrutura criará uma nova linha e redimensionará a barra de dock de acordo ou posicionará a barra de ferramentas em uma linha existente.

Janelas com mini-moldura

Um painel flutuante reside numa janela de miniquadro. As janelas de miniquadros 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 flutuar um painel em seu código, chame CBasePane::FloatPane. Depois que um painel flutua, a estrutura cria automaticamente uma janela de miniquadro e essa janela de miniquadro se torna o pai do painel flutuante. Quando o painel flutuante encaixa, a estrutura redefine o seu elemento pai e o painel flutuante torna-se uma barra de encaixe (para barras de ferramentas) ou uma área 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 CPaneDivisor. Quando um usuário encaixa um painel, a estrutura cria divisores de painel, independentemente de o painel estar encaixado no local do dock ou em outro painel. Quando um painel se encaixa no local do dock, o divisor do painel é chamado de divisor de painel padrão. O divisor de painel padrão é responsável pelo layout de todos os painéis no local de ancoragem. O gerenciador de dock mantém uma lista de divisores de painel padrão e uma lista de painéis. Os gerentes de doca são responsáveis pelo layout de todos os painéis de ancoragem.

Contentores

Todos os painéis redimensionáveis, quando encaixados uns nos outros, são mantidos em contêineres. Os contêineres são representados pela classe CPaneContainer. Cada contêiner tem ponteiros para seu painel esquerdo, painel direito, subcontêiner esquerdo, subcontêiner direito e o divisor entre as partes esquerda e direita. (A esquerda e a direita não se referem aos lados físicos, mas identificam os ramos de uma estrutura de árvore.) Desta forma, podemos construir 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 controles deslizantes que residem nessa árvore. Os gestores de contêineres de painel costumam ser incorporados a sliders padrão e a janelas de mini-quadros que contêm vários painéis.

Ocultar automaticamente as barras de controlo

Por padrão, cada CDockablePane suporta o recurso de ocultação automática. Quando um utilizador clica no botão de pin na legenda de CDockablePane, a estrutura alterna o painel para o modo de ocultação automática. Para manipular 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 controlo com separadores e barras do Outlook

A classe CMFCBaseTabCtrl implementa a funcionalidade base de uma janela com guias destacáveis. Para usar um CMFCBaseTabCtrl objeto, inicialize uma classe CBaseTabbedPane em seu aplicativo. CBaseTabbedPane é derivado 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 guias. Use CDockablePane::AttachToTabWnd para criar dinamicamente barras de controle encaixadas e com guias.

A barra de controle do Outlook também é baseada em barras com separadores. A classe CMFCOutlookBar é derivada de CBaseTabbedPane. Para obter mais informações sobre como usar a barra do Outlook, consulte Classe CMFCOutlookBar.

Ver também

Conceitos