TN025: Documento, View e criação de quadro

Esta anotação descreve as questões de propriedade e criação de WinApps, DocTemplates, documentos, quadros e modos de exibição. Você pode encontrar a maioria desta informação e outra criação interessante e questões de propriedade, no Guia do programador do Visual C++.

WinApp

Há um objeto de CWinApp no sistema.

É estaticamente construído e inicializado pela implementação a estrutura interna de WinMain. Você deve derivar de CWinApp para fazer algo útil (exceção: DLLs de extensão não devem ter uma instância de CWinApp — inicialização é feita no DllMain em vez disso).

Um objeto de CWinApp possui uma lista de modelos de documento (a CPtrList). Há um ou mais modelo de documento por pedido. DocTemplates geralmente são carregados do arquivo de recurso (ou seja, uma matriz de Cadeia de caracteres) em CWinApp:: InitInstance.

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

Um objeto CWinApp é dono de todas as janelas de quadro no aplicativo. A janela do quadro principal do aplicativo deve ser armazenada em CWinApp::m_pMainWnd; normalmente você definir m_pMainWnd na implementação de InitInstance se você não deixar AppWizard fazê-lo para você. Para a interface de documento simples (SDI) é um CFrameWnd que serve como a janela do quadro principal do aplicativo, bem como a única janela de quadro do documento. Interface de documentos múltiplos (MDI) é um-quadro MDI (classe CMDIFrameWnd) que serve como a janela do quadro principal do aplicativo que contém todos o filho s de CFrameWnd. Cada janela filho é da classe CMDIChildWnd (derivado from CFrameWnd) e serve como um dos muitos potencialmente documento quadro windows.

DocTemplates

CDocTemplate é o criador e o Gerenciador de documentos. Possui os documentos que ele cria. Se seu aplicativo usa a abordagem baseada em recursos descrita abaixo, não precisará derivam de CDocTemplate.

Para um aplicativo SDI, a classe CSingleDocTemplate controla de um Abrir documento. 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 o membro virtual funções para adicionar ou remover um documento do modelo. CDocTemplate é amigo de CDocument assim que podemos definir o ponteiro de volta CDocument::m_pDocTemplate protegido para apontar para o modelo de doc que criou o documento.

CWinApp manipula a implementação de OnFileOpen padrão, que por sua vez irá consultar todos os modelos de doc. A implementação inclui a procura de documentos já abertos e decidir o que formatar para abrir 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

Um CDocument é possuído por um CDocTemplate.

Documentos têm uma lista de atualmente abertos views (derivado de CView) que está exibindo o documento (a CPtrList).

Documentos não criar/destruir os pontos de vista, mas eles estão conectados uns aos outros, após terem sido criados. Quando um documento é fechado (isto é, a arquivo/fechar), todos os modos de exibição anexados serão fechados. Quando a última exibição em um documento é fechada (isto é, janela/fechar) o documento será fechado.

O CDocument::AddView, RemoveView interface é usado para manter a lista de exibição. CDocument é amigo de CView , assim podemos definir o ponteiro de volta CView::m_pDocument.

CFrameWnd

Um 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 derivando uma classe nova. As classes derivadas CMDIFrameWnd e CMDIChildWnd também são aprimoradas para que muitos comandos padrão já estão implementados.

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

Para um janela de quadro MDI, a área do cliente é preenchida com o controle MDICLIENT que por sua vez é o pai de todas as janelas de quadro filho MDI. Para uma janela do quadro SDI ou uma janela do quadro filho MDI, a área do cliente normalmente é preenchida com um CView-derivado objeto de janela. No caso de CSplitterWnd, a área de cliente do Exibir é preenchida com o objeto de janela de CSplitterWnd e CView-derivada janela objetos (um por divisão painel) são criados como janelas filho do CSplitterWnd.

Técnico anotações por número |nbsp; &Notas técnicas por categoria

Index