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 na Criação de Documento/Exibição. Muitos aplicativos dão suporte a um único tipo de documento (mas possivelmente vários documentos abertos desse tipo) com uma única exibição no documento e apenas uma janela de quadro por documento. Mas alguns aplicativos podem precisar alterar um ou mais desses padrões.

O que você quer saber mais sobre

Vários tipos de documento

O Assistente de Aplicativo MFC cria uma única classe de documento para você. Em alguns casos, porém, 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 sua própria classe de documento e provavelmente por sua própria classe de exibição também. Quando o usuário escolhe o comando Arquivo Novo, a estrutura exibe uma caixa de diálogo que lista os tipos de documento compatíveis. Em seguida, ele cria um documento do tipo que o usuário escolhe. Cada tipo de documento é gerenciado por seu próprio objeto de modelo de documento.

Para criar classes de documento extras, consulte Adicionando 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 obter mais informações, consulte Modelos de Documento.

Múltiplas visualizações

Muitos documentos exigem apenas uma única exibição, mas é possível dar suporte a mais de uma exibição de um único documento. Para ajudá-lo 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 permitir que várias exibições saibam 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. Estes modelos são:

  • Exibir objetos da mesma classe, cada um em uma janela de quadro de documento MDI separada.

    Talvez você queira dar suporte à criação de uma segunda janela de quadro em um documento. O usuário pode escolher um comando Nova Janela para abrir um segundo quadro com uma exibição do mesmo documento e, em seguida, 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.

  • Exibir objetos da mesma classe na mesma janela de quadro de documento.

    Janelas de divisão dividem o espaço de exibição de uma única janela de 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 obter mais informações, consulte Splitter Windows.

  • Exibir objetos de classes diferentes em uma única janela de quadro.

    Nesse modelo, uma variação da janela do divisor, várias exibições compartilham uma só janela de quadro. As visualizações são construídas a partir de classes diferentes, cada uma fornecendo uma maneira diferente de visualizar o mesmo documento. Por exemplo, uma exibição pode mostrar um documento de texto no modo normal, enquanto a outra exibição o mostra no modo de esboço. Um controle de divisor permite que o usuário ajuste os tamanhos relativos das exibições.

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

Diagrama mostrando três interfaces de usuário de exibição múltipla.
interfaces do usuário de exibição múltipla

A estrutura fornece esses modelos implementando o comando Nova Janela e fornecendo a classe CSplitterWnd, conforme discutido no Splitter Windows. Você pode implementar outros modelos usando-os como ponto de partida. Para obter programas de exemplo que ilustram diferentes configurações de exibições, janelas de quadros e divisores, consulte Exemplos de MFC.

Para obter mais informações sobre UpdateAllViews, consulte a classe CView na Referência MFC e o Scribble Sample.

Janelas com múltiplos painéis

Você pode usar o comando Nova Janela no menu Janela para aplicativos MDI para criar uma segunda janela de quadro no mesmo documento. Para mais informações, consulte o modelo inicial na figura Multiple-View de Interfaces de Usuário.

janelas separadoras

Em uma janela dividida, a janela pode ser dividida em dois ou mais painéis roláveis. Um divisor (ou "caixa dividida") na moldura da janela junto às barras de rolagem permite que o usuário ajuste os tamanhos relativos dos painéis. Cada painel é uma visualização do 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 visões podem ser de classes diferentes. Janelas de divisão de ambos os tipos são compatíveis com a classe CSplitterWnd.

Janelas de divisão dinâmicas, com exibições da mesma classe, permitem que o usuário divida uma janela em vários painéis à vontade e role painéis diferentes para ver diferentes partes do documento. O usuário também pode desfazer a divisão da janela para remover as visões adicionais. As janelas de divisor adicionadas à amostra de Rabisco são um exemplo. Esse tópico descreve a técnica para criar janelas divisoras dinâmicas. 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 divisão" 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 obter mais informações, consulte a classe CSplitterWnd nas amostras MFC Reference e MFC.

Consulte também

Arquitetura de documento/exibição