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
oCEditView
. (También puede usarCEditView
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
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)