Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A relação padrão entre um documento, sua exibição e sua janela de quadro é descrita em Criação de Documento/Exibição. Muitas aplicações suportam um único tipo de documento (mas possivelmente vários documentos abertos desse tipo) com uma única vista no documento e apenas uma janela de moldura 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 documentos
O MFC Application Wizard cria uma única classe de documento para você. Em alguns casos, porém, pode ser necessário suportar mais de um tipo de documento. Por exemplo, seu aplicativo pode precisar de planilhas e documentos gráficos. 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 documentos suportados. 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 fornecer as informações solicitadas do documento. Em seguida, implemente os dados da nova classe.
Para informar a estrutura sobre sua classe de documento extra, você deve adicionar uma segunda chamada a AddDocTemplate na substituição InitInstance da classe de aplicativo. Para obter mais informações, consulte Modelos de documento.
Várias visualizações
Muitos documentos requerem apenas uma vista única, mas é possível suportar mais do que uma vista de um único documento. Para ajudá-lo a implementar vários modos de exibição, um objeto de documento mantém uma lista de seus modos de exibição, fornece funções de membro para adicionar e remover modos de exibição e fornece a função de membro UpdateAllViews para permitir que vários modos de exibição saibam quando os dados do documento foram alterados.
MFC suporta três interfaces de usuário comuns que exigem várias visualizações no mesmo documento. Estes modelos são:
Exiba 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 visualizar diferentes partes do documento simultaneamente. A estrutura suporta o comando Nova janela 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.
As janelas divisórias 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.
Exiba objetos de diferentes classes em uma única janela de quadro.
Neste modelo, uma variação da janela do divisor, várias visualizações compartilham uma única janela de quadro. Os modos de exibição são construídos a partir de classes diferentes, cada modo de exibição fornecendo uma maneira diferente de exibir o mesmo documento. Por exemplo, uma visualização pode mostrar um documento de processamento de texto no modo normal, enquanto a outra o mostra na visualização de tópicos. Um controle divisor permite ao usuário ajustar os tamanhos relativos das visualizaçõ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.
Multiple-View Interfaces de usuário
A estrutura fornece esses modelos implementando o comando New Window e fornecendo a classe CSplitterWnd, conforme discutido em Splitter Windows. Você pode implementar outros modelos usando-os como seu ponto de partida. Para programas de exemplo que ilustram diferentes configurações de modos de exibição, janelas de quadro e divisores, consulte Exemplos de MFC.
Para mais informações sobre UpdateAllViews
, consulte a classe CView na Referência MFC e no exemplo Scribble.
Janelas de múltiplas armações
Você pode usar o comando Nova janela no menu Janela para aplicativos MDI para criar uma segunda janela de quadro no mesmo documento. Para obter mais informações, consulte o primeiro modelo na figura Multiple-View Interfaces de usuário.
Janelas divisórias
Em uma janela de divisão, a janela é, ou pode ser, dividida em dois ou mais painéis roláveis. Um controle divisor (ou "caixa de divisão") no quadro da janela ao lado das barras de rolagem permite que o usuário ajuste os tamanhos relativos dos painéis. Cada painel é uma vista do mesmo documento. Em divisores "dinâmicos", as visualizações são da mesma classe, como mostrado na parte b da figura Multiple-View Interfaces de Usuário. Em divisores "estáticos", as visualizações podem ser de diferentes classes. Janelas divisórias de ambos os tipos são suportadas pela classe CSplitterWnd.
As janelas divisórias dinâmicas, com vistas da mesma classe, permitem que o utilizador divida uma janela em vários painéis à vontade e, em seguida, se desloque por diferentes painéis para ver diferentes partes do documento. O usuário também pode desdividir a janela para remover as visualizações adicionais. As janelas divisórias adicionadas ao exemplo Scribble são um exemplo. Esse tópico descreve a técnica para criar janelas divisórias dinâmicas. Uma janela divisória dinâmica é mostrada na parte b da figura Multiple-View Interfaces de Usuário.
As janelas divisórias estáticas, com vistas de diferentes classes, começam com a janela dividida em vários painéis, cada um 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 à direita exibe uma imagem ampliada do mesmo bitmap. Os painéis são separados por uma "barra divisória" que o usuário pode arrastar para alterar os tamanhos relativos dos painéis. Uma janela divisória estática é mostrada na parte c da figura Multiple-View Interfaces de Usuário.
Para obter mais informações, consulte a classe CSplitterWnd na Referência MFC e Exemplos de MFC.