Partilhar via


CMultiDocTemplate Classe

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

Sintaxe

class CMultiDocTemplate : public CDocTemplate

Membros

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

Construtores Públicos

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

Observações

Um aplicativo MDI usa a janela de quadro principal como um espaço de trabalho no qual o usuário pode abrir zero ou mais janelas de quadro de documento, cada uma das quais exibe um documento. Para obter uma descrição mais detalhada do 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, que você deriva de CDocument.

  • Uma classe de exibição, que exibe dados da classe de documento listada acima. Você pode 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 o modo de exibição. Para um modelo de documento MDI, você pode derivar essa classe de CMDIChildWnd, ou, se não precisar personalizar o comportamento das janelas de quadro de documento, você pode usar CMDIChildWnd diretamente sem derivar sua própria classe.

Um aplicativo MDI pode suportar mais de um tipo de documento, e documentos de diferentes tipos podem ser abertos ao mesmo tempo. Seu aplicativo tem um modelo de documento para cada tipo de documento suportado. Por exemplo, se seu aplicativo MDI suporta planilhas e documentos de texto, o aplicativo tem dois CMultiDocTemplate objetos.

O aplicativo usa o(s) modelo(s) de documento quando o usuário cria um novo documento. Se o aplicativo oferecer suporte a mais de um tipo de documento, a estrutura obterá os nomes dos tipos de documento suportados dos modelos de documento e os exibirá em uma lista na caixa de diálogo Novo arquivo. Depois que o usuário seleciona um tipo de documento, o aplicativo cria um objeto de classe de documento, um objeto de janela de quadro e um objeto de exibição e os anexa uns aos outros.

Você não precisa chamar nenhuma função de CMultiDocTemplate membro, exceto o construtor. A estrutura manipula CMultiDocTemplate objetos internamente.

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

Hierarquia de herança

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Requerimentos

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 string consiste em até sete substrings separadas pelo caractere '\n' (o caractere '\n' é necessário como um espaço reservado se uma substring não estiver incluída; no entanto, caracteres '\n' à direita não são necessários); Essas substrings descrevem 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 cadeia de caracteres; toda a cadeia de caracteres aparece como uma única entrada no Editor de Cadeia 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 CRuntimeClass objeto da classe de documento. Esta classe é uma CDocumentclasse derivada que você define para representar seus documentos.

pFrameClasse
Aponta para o CRuntimeClass objeto da classe frame-window. Essa classe pode ser uma CMDIChildWndclasse derivada ou pode ser CMDIChildWnd ela mesma se você quiser um comportamento padrão para suas janelas de quadro de documento.

pViewClass
Aponta para o CRuntimeClass objeto da classe view. Esta classe é uma CViewclasse derivada que você define para exibir seus documentos.

Observações

Aloque dinamicamente um CMultiDocTemplate objeto para cada tipo de documento suportado pelo seu aplicativo e passe cada um para CWinApp::AddDocTemplate a InitInstance função de membro da sua 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)));

Eis 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);

Ver também

CDocTemplate Classe
Gráfico de Hierarquia
CDocTemplate Classe
CSingleDocTemplate Classe
Classe CWinApp