CMultiDocTemplate (clase)

Define una plantilla de documento que implementa la interfaz de múltiples documentos (MDI).

Sintaxis

class CMultiDocTemplate : public CDocTemplate

Miembros

Las funciones miembro de esta clase son virtuales. Consulte CDocTemplate y CCmdTarget para obtener documentación.

Constructores públicos

Nombre Descripción
CMultiDocTemplate::CMultiDocTemplate Construye un objeto CMultiDocTemplate.

Comentarios

Una aplicación MDI usa la ventana de marco principal como un área de trabajo en la que el usuario puede abrir cero o más ventanas de marco de documento, cada una de las cuales muestra un documento. Para obtener una descripción más detallada de MDI, consulte Directrices de interfaz de Windows para el diseño de software.

Una plantilla de documento define las relaciones entre tres tipos de clases:

  • Clase de documento, que se deriva de CDocument.

  • Clase de vista, que muestra datos de la clase de documento indicada anteriormente. Puede derivar esta clase de CView, CScrollView, CFormView o CEditView. (También puede usar CEditView directamente).

  • Clase de ventana de marco, que contiene la vista. Para una plantilla de documento MDI, puede derivar esta clase de CMDIChildWnd o, si no necesita personalizar el comportamiento de las ventanas de marco de documento, puede usar CMDIChildWnd directamente sin derivar su propia clase.

Una aplicación MDI puede admitir más de un tipo de documento y los documentos de diferentes tipos se pueden abrir al mismo tiempo. La aplicación tiene una plantilla de documento para cada tipo de documento que admita. Por ejemplo, si la aplicación MDI admite tanto hojas de cálculo como documentos de texto, la aplicación tiene dos objetos CMultiDocTemplate.

La aplicación usa las plantillas de documento cuando el usuario crea un nuevo documento. Si la aplicación admite más de un tipo de documento, el marco obtiene los nombres de los tipos de documento admitidos de las plantillas de documento y los muestra en una lista en el cuadro de diálogo Archivo nuevo. Cuando el usuario ha seleccionado un tipo de documento, la aplicación crea un objeto de clase de documento, un objeto de ventana de marco y un objeto de vista y los adjunta entre sí.

No es necesario llamar a ninguna función miembro de CMultiDocTemplate excepto el constructor. El marco controla los objetos CMultiDocTemplate internamente.

Para más información sobre CMultiDocTemplate, consulte Plantillas de documento y proceso de creación de documentos o vistas.

Jerarquía de herencia

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Requisitos

Encabezado: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

Construye un objeto CMultiDocTemplate.

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

Parámetros

nIDResource
Especifica el identificador de los recursos usados con el tipo de documento. Esto puede incluir recursos de menú, icono, tabla aceleradora y cadena.

El recurso de cadena consta de hasta siete subcadenas separadas por el carácter "\n" (el carácter "\n" es necesario como marcador de posición si no se incluye una subcadena; sin embargo, no son necesarios caracteres "\n" finales); estas subcadenas describen el tipo de documento. Para obtener información sobre las subcadenas, consulte CDocTemplate::GetDocString. Este recurso de cadena se encuentra en el archivo de recursos de la aplicación. Por ejemplo:

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

La cadena comienza con un carácter "\n" porque la primera subcadena no se usa para las aplicaciones MDI, por lo que no se incluye. Puede editar esta cadena mediante el editor de cadenas; toda la cadena aparece como una sola entrada en el Editor de cadenas, no como siete entradas independientes.

Para más información sobre estos tipos de recursos, consulte Editores de recursos.

pDocClass
Apunta al objeto CRuntimeClass de la clase de documento. Esta clase es una clase derivada de CDocument que se define para representar los documentos.

pFrameClass
Apunta al objeto CRuntimeClass de la clase frame-window. Esta clase puede ser una clase derivada de CMDIChildWnd o puede ser CMDIChildWnd si desea un comportamiento predeterminado para las ventanas del marco de documento.

pViewClass
Apunta al objeto CRuntimeClass de la clase de vista. Esta clase es una clase derivada de CView que se define para mostrar los documentos.

Comentarios

Asigne dinámicamente un objeto CMultiDocTemplate para cada tipo de documento que admita la aplicación y pase cada uno a CWinApp::AddDocTemplate desde la función miembro de la clase InitInstance de aplicación.

Ejemplo

// 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 es un segundo ejemplo.

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

Consulte también

CDocTemplate (clase)
Gráfico de jerarquías
CDocTemplate (clase)
CSingleDocTemplate (clase)
CWinApp (clase)