Compartilhar via


Vários tipos de documento, exibições e janelas com moldura

A relação padrão entre um documento, seu modo de exibição e sua janela de quadro é descrita em Criação de Documento/Exibição. Muitos aplicativos dão suporte a um só tipo de documento (mas possivelmente vários documentos abertos desse tipo) com uma só exibição no documento e apenas uma janela de quadro por documento. Porém, alguns aplicativos podem precisar alterar um ou mais desses padrões.

O que mais você deseja saber?

Vários tipos de documento

O Assistente de Aplicativo MFC cria uma só classe de documento para você. Porém, em alguns casos talvez seja necessário dar suporte a mais de um tipo de documento. Por exemplo, seu aplicativo pode precisar de documentos de planilha e gráfico. Cada tipo de documento é representado por uma classe de documento própria e, provavelmente, também por uma classe de exibição própria. Quando o usuário escolhe o comando File New, a estrutura exibe uma caixa de diálogo que lista os tipos de documento com suporte. Ele então cria um documento do tipo que o usuário escolhe. Cada tipo de documento é gerenciado pelo próprio objeto de modelo de documento.

Para criar classes de documento extras, confira Como adicionar uma classe. Escolha CDocument como o Tipo de Classe do qual derivar e forneça as informações do documento solicitadas. Em seguida, implemente os dados da nova classe.

Para informar a estrutura sobre sua classe de documento extra, adicione uma segunda chamada ao AddDocTemplate na substituição InitInstance da classe de aplicativo. Para mais informações, confira Modelos de Documento.

Várias exibições

Muitos documentos exigem apenas um modo de exibição, mas é possível dar suporte a mais de uma exibição de um só documento. Para ajudar você a implementar várias exibições, um objeto de documento mantém uma lista de seus modos de exibição, fornece funções de membro para adicionar e remover exibições e fornece a função de membro UpdateAllViews para informar várias exibições quando os dados do documento foram alterados.

O MFC dá suporte a três interfaces de usuário comuns que exigem várias exibições no mesmo documento. Esses modelos são:

  • Exiba objetos da mesma classe, cada um em uma janela com moldura de documento MDI separada.

    Talvez você queira dar suporte à criação de uma segunda janela de quadro em um documento. O usuário poderia escolher um comando New Window para abrir um segundo quadro com uma exibição do mesmo documento e usar os dois quadros para exibir partes diferentes do documento simultaneamente. A estrutura dá suporte ao comando New Window no menu Janela para aplicativos MDI duplicando a janela de quadro inicial e a exibição anexada ao documento.

  • Exiba objetos da mesma classe na mesma janela com moldura de documento.

    Janelas de divisor dividem o espaço de exibição de uma só janela do documento em várias exibições separadas do documento. A estrutura cria vários objetos de exibição da mesma classe de exibição. Para mais informações, confira Janela de divisor.

  • Exiba objetos de classes diferentes em uma só janela de quadro.

    Nesse modelo, uma variação da janela do divisor, várias exibições compartilham uma só janela de quadro. Os modos de exibição são construídos com base em diferentes classes, tendo cada exibição um modo diferente de exibir o mesmo documento. Por exemplo, uma exibição pode mostrar um documento de processamento de palavras no modo normal, enquanto a outra exibição o mostra no modo de estrutura de tópicos. Um controle de divisor permite que o usuário ajuste os tamanhos relativos dos modos de exibição.

A figura a seguir, dividida nas partes a, b e c, mostra os três modelos de interface do usuário na ordem apresentada acima.

Diagram showing three multiple view user interfaces.
interfaces do usuário de exibição múltipla

A estrutura fornece esses modelos implementando o comando New Window e fornecendo a classe CSplitterWnd, conforme discutido em Janelas de divisor. Você pode implementar outros modelos usando-os como ponto de partida. Para programas de exemplo que ilustram diferentes configurações de modos de exibição, janelas com moldura e divisores, confira Exemplos de MFC.

Para mais informações sobre UpdateAllViews, confira a classe CView em Referência de MFC e Exemplo de Rabisco.

Várias janelas com moldura

Você pode usar o comando New Window no menu Janela para aplicativos MDI para criar uma segunda janela com moldura no mesmo documento. Para mais informações, confira o primeiro modelo na figura Interfaces do usuário de exibição múltipla.

Janelas divisoras

Em uma janela de divisor, a janela é, ou pode ser, dividida em dois ou mais painéis roláveis. Um controle de divisor (ou "caixa de divisão") no quadro de janela ao lado das barras de rolagem permite que o usuário ajuste os tamanhos relativos dos painéis. Cada painel é uma exibição no mesmo documento. Em divisores "dinâmicos", os modos de exibição são da mesma classe, conforme mostrado na parte b da figura Interfaces do usuário de exibição múltipla. Em divisores "estáticos", as exibições podem ser de classes diferentes. Janelas de divisor de ambos os tipos têm suporte pela classe CSplitterWnd.

Janelas de divisor dinâmico, com exibições da mesma classe, permitem que o usuário divida uma janela em vários painéis à vontade e então role em painéis diferentes para ver diferentes partes do documento. O usuário também pode cancelar a divisão da janela para remover as exibições adicionais. As janelas de divisor adicionadas à amostra de Rabisco são um exemplo. Esse tópico descreve a técnica para criar janelas de divisor dinâmico. Uma janela de divisor dinâmico é mostrada na parte b da figura Interfaces do usuário de exibição múltipla.

Janelas de divisor estático, com exibições de classes diferentes, começam com a janela dividida em vários painéis, cada uma com uma finalidade diferente. Por exemplo, no editor de bitmap do Visual C++, a janela de imagem mostra dois painéis lado a lado. O painel esquerdo exibe uma imagem em tamanho real do bitmap. O painel direito exibe uma imagem ampliada ou com zoom do mesmo bitmap. Os painéis são separados por uma "barra de divisor" que o usuário pode arrastar para alterar os tamanhos relativos dos painéis. Uma janela de divisor estático é mostrada na parte c da figura Interfaces do usuário de exibição múltipla.

Para mais informações, confira a classe CSplitterWnd em Referência de MFC e Exemplos de MFC .

Confira também

Arquitetura de documento/exibição