Partilhar via


Classe CMultiDocTemplate

Define um modelo de documento que implementa a MDI (interface de vários documentos).

Sintaxe

class CMultiDocTemplate : public CDocTemplate

Membros

As funções de membro para essa classe são virtuais. Consulte CDocTemplate e CCmdTarget para obter a documentação.

Construtores públicos

Nome Descrição
CMultiDocTemplate::CMultiDocTemplate Constrói um objeto CMultiDocTemplate.

Comentários

Um aplicativo MDI usa a janela do quadro principal como um workspace em que o usuário poderá abrir zero ou mais janelas do quadro de documento e cada uma exibirá um documento. Para obter uma descrição mais detalhada da MDI, consulte Diretrizes de interface do Windows para design de software.

Um modelo de documento define as relações entre três tipos de classes:

  • Uma classe de documento, derivada de CDocument.

  • Uma classe de exibição, que exibe dados da classe de documento listada acima. É possível derivar essa classe de CView, CScrollView, CFormView ou CEditView. (Você também pode usar CEditView diretamente.)

  • Uma classe de janela de quadro que contém a exibição. Para um modelo de documento MDI, é possível derivar essa classe de CMDIChildWnd ou, se não precisar personalizar o comportamento das janelas do quadro do documento, poderá usar CMDIChildWnd diretamente sem derivar a própria classe.

Um aplicativo MDI pode dar suporte a mais de um tipo de documento e documentos de diferentes tipos poderão ser abertos ao mesmo tempo. O aplicativo tem um modelo de documento para cada tipo de documento com suporte. Por exemplo, se o aplicativo MDI der suporte a planilhas e documentos de texto, o aplicativo terá dois objetos CMultiDocTemplate.

O aplicativo usará os modelos de documento quando o usuário criar um novo documento. Se o aplicativo der suporte a mais de um tipo de documento, a estrutura obterá os nomes dos tipos de documentos com suporte dos modelos de documento e os exibirá em uma lista na caixa de diálogo Arquivo Novo. Após o usuário selecionar um tipo de documento, o aplicativo criará um objeto de classe de documento, um objeto de janela do quadro e um objeto de exibição e anexará uns aos outros.

Não é necessário chamar nenhuma função membro de CMultiDocTemplate, exceto o construtor. A estrutura manipula objetos CMultiDocTemplate internamente.

Para obter mais informações sobre CMultiDocTemplate, consulte Modelos de documentos e o processo de criação de documentos/exibições.

Hierarquia de herança

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Requisitos

Cabeçalho: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

Constrói um objeto CMultiDocTemplate.

CMultiDocTemplate(
    UINT nIDResource,
    CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass,
    CRuntimeClass* pViewClass);

Parâmetros

nIDResource
Especifica a ID dos recursos usados com o tipo de documento. Isso pode incluir recursos de menu, ícone, tabela aceleradora e cadeia de caracteres.

O recurso de cadeia de caracteres consiste em até sete substrings separadas pelo caractere '\n' (o caractere '\n' será necessário como um espaço reservado se uma substring não estiver incluída, no entanto, os caracteres '\n' à direita não serão necessários ), portanto, essas substrings descreverão o tipo de documento. Para obter informações sobre as substrings, consulte CDocTemplate::GetDocString. Esse recurso de cadeia de caracteres é encontrado no arquivo de recurso do aplicativo. Por exemplo:

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END

A cadeia de caracteres começa com um caractere '\n' porque a primeira substring não é usada para aplicativos MDI e, portanto, não está incluída. Você pode editar essa cadeia de caracteres usando o editor de cadeias de caracteres. A cadeia de caracteres inteira aparece como uma só entrada no Editor de Cadeias de Caracteres, não como sete entradas separadas.

Para obter mais informações sobre esses tipos de recursos, consulte Editores de Recursos.

pDocClass
Aponta para o objeto CRuntimeClass da classe de documento. Essa é uma classe derivada de CDocument que você define para representar seus documentos.

pFrameClass
Aponta para o objeto CRuntimeClass da classe de janela do quadro. Essa classe poderá ser uma classe derivada de CMDIChildWnd ou poderá ser a própria CMDIChildWnd se você quiser o comportamento padrão para as janelas do quadro do documento.

pViewClass
Aponta para o objeto CRuntimeClass da classe de exibição. Essa é uma classe derivada de CView que você define para exibir seus documentos.

Comentários

Aloque dinamicamente um objeto CMultiDocTemplate para cada tipo de documento que o aplicativo dá suporte e passe cada um para CWinApp::AddDocTemplate da função membro InitInstance da classe de aplicativo.

Exemplo

// Code fragment from CMyApp::InitInstance

// Establish all of the document types
// supported by the application

AddDocTemplate(new CMultiDocTemplate(IDR_BRUSHDOCTYPE,
   RUNTIME_CLASS(CBrushDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CBrushView)));

AddDocTemplate(new CMultiDocTemplate(IDR_DCDOCTYPE,
   RUNTIME_CLASS(CDCDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CDCView)));

Este é um segundo exemplo.

// Code fragment taken from CMyApp::InitInstance

// Normally, an application creates a document 
// template and registers it with MFC as a part
// of its initialization.

// IDR_EXAMPLEDOCTYPE is a resource ID string; see
// the CDocTemplate class overview documentation
// for more information on its format.

// The next three parameters use the RUNTIME_CLASS()
// macro to get runtime type information for the doc,
// frame, and view classes that will be associated
// by the template.

pDocTemplate = new CMultiDocTemplate(IDR_EXAMPLEDOCTYPE,
   RUNTIME_CLASS(CExampleDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CExampleView));
if (!pDocTemplate)
return FALSE;

// After the following call, MFC is aware of the doc
// template and will free it when the application is
// shut down. The doc templates known to MFC will
// automatically be used when CWinApp:OnFileOpen()
// or CWinApp::OnFileNew() are called.

AddDocTemplate(pDocTemplate);

Confira também

Classe CDocTemplate
Gráfico da hierarquia
Classe CDocTemplate
Classe CSingleDocTemplate
Classe CWinApp