Alternativas para a arquitetura de exibição do documento
Aplicativos MFC normalmente usam a arquitetura de exibição do documento para gerenciar informações, formatos de arquivo e a representação visual dos dados para os usuários.Para a maioria dos aplicativos de desktop, a arquitetura de exibição do documento é uma arquitetura de aplicativo apropriado e eficiente.Essa arquitetura separa os dados da exibição e, na maioria dos casos, simplifica seu aplicativo e reduz o código redundante.
No entanto, a arquitetura de exibição do documento não é adequada para algumas situações.Considere estes exemplos:
Se são portar um aplicativo escrito em c para Windows, talvez queira concluir sua porta antes de adicionar suporte a exibição do documento para seu aplicativo.
Se você estiver escrevendo um utilitário leve, você pode achar que você pode fazer sem a arquitetura de exibição do documento.
Se seu código original já combina gerenciamento de dados com dados exibindo, movendo o código para o modelo de exibição do documento não vale o esforço porque você deve separar os dois.Você pode preferir deixar o código como está.
Para criar um aplicativo que não usa a arquitetura de exibição do documento, desmarque o suporte a arquitetura de exibição do documento caixa de seleção na etapa 1 do Assistente de aplicativo do MFC.Consulte MFC Application Wizard para obter detalhes.
Observação |
---|
Aplicativos baseados no diálogo produzidos pelo Assistente de aplicativo do MFC não usarem a arquitetura de exibição do documento, assim, a suporte a arquitetura de exibição do documento caixa de seleção é desabilitada se você selecionar o tipo de aplicativo do diálogo. |
Os assistentes do Visual C++, bem como os editores de origem e caixa de diálogo, trabalham com o aplicativo gerado como fariam com qualquer outro aplicativo gerado pelo assistente.O aplicativo pode oferecer suporte a barras de ferramentas, barras de rolagem e uma barra de status e tem um sobre caixa.Seu aplicativo não registrará os modelos de documento e não conterá uma classe de documento.
Observe que seu aplicativo gerado tem uma classe de modo de exibição CChildView, derivada de CWnd.MFC cria e posiciona uma instância da classe de modo de exibição em janelas de quadro criadas pelo seu aplicativo.MFC ainda impõe usando uma janela de exibição porque ele simplifica o posicionamento e gerenciamento de conteúdo do aplicativo.Você pode adicionar código de pintura para o OnPaint membro dessa classe.Seu código deve adicionar barras de rolagem no modo de exibição em vez do quadro.
Como a arquitetura de exibição do documento fornecida pelo MFC é responsável pela implementação de muitos dos recursos básicos do aplicativo, a sua ausência em seu projeto significa que são responsáveis pela implementação de vários recursos importantes do seu aplicativo:
Conforme fornecido pelo Assistente de aplicativo do MFC, o menu do seu aplicativo contém apenas New e Exit comandos na arquivo menu.(O New comando é suportado somente para aplicativos MDI, não os aplicativos SDI sem exibição do documento de suporte.) O recurso menu gerado não oferecerá suporte a uma lista MRU (usado recentemente).
Você deve adicionar funções do manipulador e implementações de quaisquer comandos que o aplicativo oferecerá suporte, incluindo Abrir e Salvar na arquivo menu.MFC normalmente fornece código para oferecer suporte a esses recursos, mas esse suporte está estreitamente ligada à arquitetura de exibição do documento.
A barra de ferramentas para seu aplicativo, se solicitado, será mínima.
É altamente recomendável usar o Assistente de aplicativo do MFC para criar aplicativos sem a arquitetura de exibição do documento, porque o assistente garante uma arquitetura correta do MFC.No entanto, se você deve evitar usar o assistente, aqui estão várias abordagens para ignorar a arquitetura de exibição do documento no seu código:
Tratar o documento como um sufixo não utilizado e implementar o código de gerenciamento de dados da classe de modo de exibição, conforme sugerido acima.Sobrecarga para o documento é relativamente baixa.Um único CDocument objeto provoca uma pequena quantidade de sobrecarga por si só, mais pequena sobrecarga de CDocumentda base de classes, CCmdTarget e CObject.As duas últimas classes são pequenas.
Declarado em CDocument:
Dois CString objetos.
Três BOOLs.
Um CDocTemplate ponteiro.
Um CPtrList objeto que contém uma lista de modos de exibição do documento.
Além disso, o documento requer a quantidade de tempo para criar o objeto de documento, seus objetos de exibição, uma janela do quadro e um objeto de modelo de documento.
Trate o documento e o modo como suplementos não utilizados.Coloque seu gerenciamento de dados e o código do desenho na janela do quadro em vez do modo de exibição.Essa abordagem é mais de perto o modelo de programação da linguagem C.
Substitua as partes do framework MFC criar o documento e o modo de exibição para eliminar a criação de todo.O processo de criação do documento começa com uma chamada para CWinApp::AddDocTemplate.Eliminar de sua classe de aplicativo chamada InitInstance membro de função e, em vez disso, criar uma janela de quadro no InitInstance você mesmo.Coloque o código de gerenciamento de dados em sua classe de janela do quadro.O processo de criação de exibição do documento é ilustrado no Criação de exibição do documento.Isso é mais trabalho e requer uma compreensão mais profunda da estrutura, mas libera totalmente de sobrecarga de exibição do documento.
O artigo MFC: usando Classes de banco de dados sem documentos e modos de exibição dá exemplos mais concretos de alternativas de visualização do documento no contexto de aplicativos de banco de dados.