TN025: Documento, exibição e criação de quadro
Observação |
---|
A seguinte nota técnica não foi atualizada desde que foi incluída pela primeira vez na documentação online.Como resultado, alguns procedimentos e tópicos podem estar desatualizado ou incorreto.As informações mais recentes, é recomendável que você procure o tópico de interesse no índice de documentação on-line. |
Esta nota descreve os problemas de criação e a propriedade WINAPPS Word, DocTemplates, documentos, quadros e modos de exibição.
/Winapp/winbackup
Há um CWinApp objeto no sistema.
Estaticamente é construído e inicializado pela implementação interna da estrutura de WinMain.Você deve derivar de CWinApp fazer algo útil (exceção: DLLs de extensão não devem ter uma CWinApp instância — é feita na DllMain em vez disso).
O CWinApp objeto possui uma lista de modelos de documento (um CPtrList).Há um ou mais modelo de documento por aplicativo.DocTemplates geralmente são carregados do arquivo de recurso (ou seja, uma matriz de cadeia de caracteres) em CWinApp::InitInstance.
pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);
O CWinApp objeto possui todas as janelas de quadro no aplicativo.A janela do quadro principal do aplicativo deve ser armazenada em CWinApp::m_pMainWnd; normalmente definido m_pMainWnd na InitInstance implementação se você não tem que AppWizard fazer isso para você.Interface de documento único (SDI) essa é uma CFrameWnd que serve como a janela do quadro principal do aplicativo, bem como a única janela de quadro do documento.Para a interface de documentos múltiplos (MDI) Este é um quadro MDI (classe CMDIFrameWnd) que serve como a janela do quadro principal do aplicativo que contém todos os filhos CFrameWnds.Cada janela filho é da classe CMDIChildWnd (derivado de CFrameWnd) e serve como um potencialmente muitas janelas de quadro do documento.
DocTemplates
O CDocTemplate é o criador e Gerenciador de documentos.Ele possui os documentos que ele cria.Se seu aplicativo usa a abordagem baseada em recurso descrita abaixo, não será necessário derivar de CDocTemplate.
Para um aplicativo SDI, a classe CSingleDocTemplate mantém o controle de um documento aberto.Para um aplicativo MDI, a classe CMultiDocTemplate mantém uma lista (um CPtrList) de todos os documentos abertos criados a partir desse modelo.CDocTemplate::AddDocumente CDocTemplate::RemoveDocument fornecer funções de membro virtual para adicionar ou remover um documento do modelo.CDocTemplateé um amigo de CDocument , podemos definir o protegido de forma CDocument::m_pDocTemplate ponteiro voltar volta para o modelo de documento que criou o documento.
CWinApplida com o padrão OnFileOpen implementação, que por sua vez consultará todos os modelos de doc.A implementação inclui procurando documentos já abertos e decidir o formato para abrir novos documentos.
CDocTemplategerencia a vinculação de interface do usuário para documentos e quadros.
CDocTemplatemantém uma contagem do número de documentos sem nome.
CDocument
A CDocument pertence a um CDocTemplate.
Documentos têm uma lista de exibições abertas (derivado de CView) que está visualizando o documento (um CPtrList).
Documentos não criar/destruir os modos de exibição, mas eles estão conectados uns aos outros após serem criados.Quando um documento é fechado (isto é, a arquivo e fechar), todos os modos de anexos serão fechados.O documento será fechado quando a última exibição em um documento é fechada (isto é, janela e fechar).
O CDocument::AddView, RemoveView interface é usada para manter a lista de exibição.CDocument é um amigo de CView forma podemos definir o CView::m_pDocument ponteiro voltar.
CFrameWnd
A CFrameWnd (também conhecido como um quadro) desempenha a mesma função como no MFC 1.0, mas agora o CFrameWnd classe é projetado para ser usado em muitos casos sem derivar uma nova classe.As classes derivadas CMDIFrameWnd e CMDIChildWnd também foram aprimorados para muitos comandos padrão já estão implementados.
O CFrameWnd é responsável pela criação do windows na área de cliente do quadro.Normalmente é uma janela principal, preenchendo a área cliente do quadro.
Para uma janela de quadro MDI, a área do cliente é preenchida com o controle MDICLIENT que por sua vez é pai de todas as janelas de quadro filho MDI.Para uma janela de quadro SDI ou uma janela de quadro MDI filho, a área cliente geralmente é preenchida com um CView-derivado objeto window.No caso de CSplitterWnd, a área cliente do modo de exibição é preenchida com o CSplitterWnd objeto window e o CView-objetos derivados de janela (um por painel de divisão) são criados como janelas filho do CSplitterWnd.