Partilhar via


TN025: Documento, exibição e criação quadro

Observação:

A seguinte nota técnica não foi atualizada desde que foi incluída pela primeira vez na documentação online.sistema autônomo resultado, alguns procedimentos e tópicos podem estar desatualizado ou incorreto.Para obter informações mais recentes, é recomendável que você procurar o tópico de interesse no índice de documentação online.

Esta nota descreve os problemas de criação e a propriedade para WinApps, DocTemplates, documentos, quadros e modos de exibição.

WinApp

Há um CWinApp objeto no sistema.

É construído e inicializado pelo implementação interna da estrutura de estaticamenteWinMain. Você deve derivar de CWinApp Para fazer algo útil (exceção: DLLs de extensão não devem ter um CWinApp instância — inicialização é feita DllMain em vez disso).

O umCWinApp objeto possui uma lista de modelos de documento (um CPtrList). Não há modelo de documento um ou mais por aplicativo.DocTemplates geralmente são carregados do arquivo de recurso (ou seja, uma matriz de seqüência de caracteres) no CWinApp::InitInstance.

pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);

O umCWinApp objeto é responsável por todas as janelas de quadro no aplicativo. A janela do quadro principal para o aplicativo deve ser armazenada em CWinApp::m_pMainWnd; geralmente você defina m_pMainWnd no InitInstance implementação se você não tem que AppWizard fazer isso para você. Para a interface de documento único (SDI) é um CFrameWnd que serve sistema autônomo a janela do quadro principal do aplicativo, bem sistema autônomo a janela do quadro único documento. Para vários documentos MDI (interface) é um quadro MDI (classe CMDIFrameWnd) que serve sistema autônomo a janela do quadro principal do aplicativo que contém todos sistema autônomo filhos CFrameWndsistema autônomo. Cada janela filho é da classe CMDIChildWnd (derivado de CFrameWnd) e serve sistema autônomo um potencialmente muitas janelas de quadro do documento.

DocTemplates

The CDocTemplate é o criador e o Gerenciador de documentos. Ele possui os documentos que ele cria.Se seu aplicativo usa a abordagem baseada em recurso descrita abaixo, ele não será necessário derivar de CDocTemplate.

Para um aplicativo SDI, a classe CSingleDocTemplate mantém registro de um documento em aberto. Para um aplicativo MDI, a classe CMultiDocTemplate mantém uma lista (a CPtrList) de todos os documentos abertos criados a partir desse modelo. CDocTemplate::AddDocument e CDocTemplate::RemoveDocument fornecem funções de membro virtual para adição ou remoção de um documento do modelo. CDocTemplate é um amigo CDocument , pode conjunto o protegidoCDocument::m_pDocTemplate back ponteiro volta para o modelo de documento que criou o documento.

CWinApp lida com o padrão OnFileOpen implementação, que por sua vez consultará todos os modelos de doc. A implementação inclui procurando documentos já está abertos e decidir o que formatar para em em aberto novos documentos em.

CDocTemplate gerencia a vinculação de interface do usuário para documentos e quadros.

CDocTemplate mantém uma contagem do número de documentos sem nome.

CDocument

A CDocument pertence a um CDocTemplate.

Documentos tem uma lista de modos de exibição abertos no momento (derivado de CView) que está exibindo o documento (um CPtrList).

Documentos não criar/destruam os modos de exibição, mas eles estão conectados uns aos outros depois que são criados.Quando um documento é fechado (ou seja, a arquivos e fechar), todos os modos de anexos serão fechados.Quando a última exibição em um documento é fechada (ou seja, janela/Fechar), o documento será fechado.

The CDocument::AddView, RemoveView interface é usada para manter a lista de exibição. CDocument é um amigo de CView nós pode conjunto o CView::m_pDocument back ponteiro.

CFrameWnd

A CFrameWnd (também conhecido sistema autônomo um quadro) desempenha a função mesma sistema autônomo no MFC 1.0, mas agora o CFrameWnd classe foi projetado para ser usado em muitos casos, sem derivar uma nova classe. As classes derivadas CMDIFrameWnd e CMDIChildWnd também foram aprimoradas para que muitos comandos padrão já estão implementados.

The CFrameWnd é responsável por criar janelas na área de cliente do quadro. Normalmente, haverá uma janela principal do preenchendo a área de cliente do quadro.

Para uma janela de quadro MDI, a área de cliente é preenchida com o controle MDICLIENT que por sua vez é o pai de todas as janelas filho MDI quadro.Para uma janela de quadro SDI ou uma janela de quadro MDI filho, a área de cliente geralmente é preenchida com um CView-derivados do objeto da janela. No caso de CSplitterWnd, a área de cliente do modo de exibição é preenchida com o CSplitterWnd objeto da janela e o CView-objetos de janela derivado (um por painel de divisão) são criados sistema autônomo janelas filho da CSplitterWnd.

Consulte também

Outros recursos

Notas técnicas por número

Notas técnicas por categoria