Clase CDocTemplate
Una clase base abstracta que define la funcionalidad básica para las plantillas de documento.
Sintaxis
class CDocTemplate : public CCmdTarget
Miembros
Constructores protegidos
Nombre | Descripción |
---|---|
CDocTemplate::CDocTemplate |
Construye un objeto CDocTemplate . |
Métodos públicos
Nombre | Descripción |
---|---|
CDocTemplate::AddDocument |
Agrega un documento a una plantilla. |
CDocTemplate::CloseAllDocuments |
Cierra todos los documentos asociados a la plantilla. |
CDocTemplate::CreateNewDocument |
Esta función se usa para crear un nuevo documento. |
CDocTemplate::CreateNewFrame |
Crea una nueva ventana de marco que contiene un documento y una vista. |
CDocTemplate::CreateOleFrame |
Crea una ventana de marco habilitada para OLE. |
CDocTemplate::CreatePreviewFrame |
Crea un marco secundario que se usa para la vista previa enriquecida. |
CDocTemplate::GetDocString |
Recupera una cadena asociada al tipo de documento. |
CDocTemplate::GetFirstDocPosition |
Recupera la posición del primer documento asociado a la plantilla. |
CDocTemplate::GetNextDoc |
Recupera un documento y la posición del siguiente. |
CDocTemplate::InitialUpdateFrame |
Inicializa la ventana de marco y de forma opcional la hace visible. |
CDocTemplate::LoadTemplate |
Carga los recursos de determinada CDocTemplate o clase derivada. |
CDocTemplate::MatchDocType |
Determina el grado de confianza en la coincidencia entre un tipo de documento y la plantilla. |
CDocTemplate::OpenDocumentFile |
Abre un archivo especificado por un nombre de ruta de acceso. |
CDocTemplate::RemoveDocument |
Quita un documento de una plantilla. |
CDocTemplate::SaveAllModified |
Guarda todos los documentos modificados asociados a esta plantilla. |
CDocTemplate::SetContainerInfo |
Determina los recursos de los contenedores OLE al editar un elemento OLE local. |
CDocTemplate::SetDefaultTitle |
Muestra el título predeterminado en la barra de título de la ventana del documento. |
CDocTemplate::SetPreviewInfo |
Configura el controlador de vista previa del proceso. |
CDocTemplate::SetServerInfo |
Determina los recursos y las clases cuando el documento de servidor se incrusta o se edita localmente. |
Comentarios
Normalmente se crean una o más plantillas de documento en la implementación de la función de la aplicación InitInstance
. 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 única aplicación de interfaz de documento (SDI), se deriva esta clase de
CFrameWnd
. Para una aplicación de varias interfaces de documento (MDI), se deriva esta clase deCMDIChildWnd
. Si no necesita personalizar el comportamiento de la ventana de marco, puede usarCFrameWnd
oCMDIChildWnd
de forma directa sin derivar su propia clase.
La aplicación tiene una plantilla de documento para cada tipo de documento que admita. Por ejemplo, si la aplicación admite hojas de cálculo además de documentos de texto, la aplicación tiene dos objetos de plantilla de documento. Cada plantilla de documento es responsable de crear y administrar todos los documentos de su tipo.
La plantilla de documento almacena punteros a los objetos CRuntimeClass
de las clases de ventana de marco, vista y documento. Los objetos CRuntimeClass
se especifican al elaborar una plantilla de documento.
La plantilla de documento contiene el id. de los recursos usados con el tipo de documento, (como los recursos de menú, icono o tabla de acelerador). La plantilla de documento también tiene cadenas que contienen información adicional sobre el tipo de documento. Aquí se incluye el nombre del tipo de documento, por ejemplo, «Worksheet» y la extensión de fichero, por ejemplo, «.xls». De forma opcional, puede contener otras cadenas que usa la interfaz de usuario de la aplicación, el Administrador de archivos de Windows y la compatibilidad con la vinculación e incrustación de objetos (OLE).
Si la aplicación es un contenedor OLE y/o un servidor, la plantilla de documento también define el id. del menú usado durante la activación local. Si la aplicación es un servidor OLE, la plantilla de documento define el id. de la barra de herramientas y menú usado en la activación local. Puede especificar estos recursos OLE adicionales, al llamar a SetContainerInfo
y SetServerInfo
.
Dado que CDocTemplate
es una clase abstracta, no puede usar la clase directamente. Una aplicación típica usa una o de las clases derivadas de CDocTemplate
proporcionadas por la biblioteca MFC (Microsoft Foundation Class): CSingleDocTemplate
, que implementa SDI, y CMultiDocTemplate
, que implementa MDI. Consulte esas clases para obtener más información sobre cómo usar plantillas de documento.
Si la aplicación requiere un paradigma de interfaz de usuario que sea diferente fundamentalmente de SDI o MDI, puede derivar su propia clase de CDocTemplate
.
Para más información sobre CDocTemplate
, consulte Plantillas de documento y proceso de creación de documentos o vistas.
Jerarquía de herencia
CDocTemplate
Requisitos
Encabezado: afxwin.h
CDocTemplate::AddDocument
Use esta función para agregar un documento a una plantilla.
virtual void AddDocument(CDocument* pDoc);
Parámetros
pDoc
Un puntero al documento que se va a agregar.
Comentarios
Las clases derivadas CMultiDocTemplate
y CSingleDocTemplate
invalidan esta función. Si deriva su propia clase de plantilla de documento de CDocTemplate
, su clase derivada debe invalidar esta función.
CDocTemplate::CDocTemplate
Construye un objeto CDocTemplate
.
CDocTemplate (
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 substrings separadas por el carácter \n
, el carácter \n
es necesario como marcador de posición si no se incluye una substring. Sin embargo, no son necesarios caracteres \n
finales. Estas substrings describen el tipo de documento. Si desea más información sobre las substings, consulte 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
Tenga en cuenta que la cadena comienza con un carácter \n
porque la primera substring 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.
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 de ventana de marco. Esta clase puede ser una clase derivada de CFrameWnd
o puede ser CFrameWnd
propiamente dicho si quiere un comportamiento predeterminado para la ventana de marco principal.
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
Use esta función miembro para construir un objeto CDocTemplate
. Asigne dinámicamente un objeto CDocTemplate
y páselo a CWinApp::AddDocTemplate
desde la función miembro InitInstance
de la clase de aplicación.
CDocTemplate::CloseAllDocuments
Llame a esta función miembro para cerrar todos los documentos abiertos.
virtual void CloseAllDocuments(BOOL bEndSession);
Parámetros
bEndSession
No se usa.
Comentarios
Esta función miembro se suele usar como parte del como Salir del archivo. La implementación predeterminada de la función llama a la función miembro CDocument::DeleteContents
para eliminar los datos del documento y, a continuación, cierra las ventanas de marco de todas las vistas adjuntas al documento.
Invalide esta función si desea exigir al usuario que realice un procesamiento de limpieza especial antes de que se cierre el documento. Por ejemplo, si el documento representa un registro en una base de datos, quizás quiera invalidar esta función para cerrar la base de datos.
CDocTemplate::CreateNewDocument
Puede llamar a esta función miembro para crear un nuevo documento del tipo asociado a esta plantilla de documento.
virtual CDocument* CreateNewDocument();
Valor devuelto
Un puntero al documento recién creado o NULL
si se produce un error.
CDocTemplate::CreateNewFrame
Crea una nueva ventana de marco que contiene un documento y una vista.
virtual CFrameWnd* CreateNewFrame(
CDocument* pDoc,
CFrameWnd* pOther);
Parámetros
pDoc
El documento al que debe hacer referencia la nueva ventana de marco. Puede ser NULL
.
pOther
La ventana de marco en la que la nueva ventana marco se va a basar. Puede ser NULL
.
Valor devuelto
Un puntero a la ventana de marco recién creada o NULL
si se produce un error.
Comentarios
CreateNewFrame
usa los objetos CRuntimeClass
que se pasan al constructor para crear una ventana de marco con una vista y un documento adjunto. Si el parámetro pDoc
es NULL
, el marco genera un mensaje TRACE
.
El parámetro pOther
se usa para implementar el comando Nueva ventana. Proporciona una ventana de marco en la que se va a modelar la nueva ventana de marco. La nueva ventana de marco normalmente se crea de forma invisible. Llame a esta función para crear ventanas de marco exteriores a la implementación del marco de Archivo nuevo y Abrir archivo.
CDocTemplate::CreateOleFrame
Crea una ventana de marco OLE.
CFrameWnd* CreateOleFrame(
CWnd* pParentWnd,
CDocument* pDoc,
BOOL bCreateView);
Parámetros
pParentWnd
Puntero a la ventana primaria de marco.
pDoc
Puntero al documento al que la nueva ventana de marco OLE debe hacer referencia.
bCreateView
Determina si se crea una vista junto con el marco.
Valor devuelto
Puntero a una ventana de marco si se ejecuta correctamente; de lo contrario, NULL
.
Comentarios
Si bCreateView
es cero, se crea un marco vacío.
CDocTemplate::GetDocString
Recupera una cadena asociada al tipo de documento.
virtual BOOL GetDocString(
CString& rString,
enum DocStringIndex index) const;
Parámetros
rString
Referencia a un objeto CString
que contendrá la cadena cuando se devuelva la función.
index
Índice de la substring que se va a recuperar de la cadena que describe el tipo de documento. Este parámetro puede tener uno de los valores siguientes:
CDocTemplate::windowTitle
Nombre que aparece en la barra de título de la ventana de la aplicación, por ejemplo, «Microsoft Excel». Solo está presente en la plantilla de documento para las aplicaciones SDI.CDocTemplate::docName
Raíz del nombre de documento predeterminado, por ejemplo, «Hoja». Esta raíz, además de un número, se usa para el nombre predeterminado de un nuevo documento de este tipo siempre que el usuario elija el comando Nuevo del menú Archivo, por ejemplo, «Sheet1», «Sheet2». Si no se especifica, «Sin título» es el valor predeterminado.CDocTemplate::fileNewName
Nombre del tipo de documento. Si la aplicación admite más de un tipo de documento, esta cadena se muestra en el cuadro de diálogo Archivo nuevo, por ejemplo, «Hoja de cálculo». Si no se especifica, el tipo de documento no es accesible mediante el comando Archivo nuevo.CDocTemplate::filterName
Descripción del tipo de documento y un filtro con caracteres comodín que coinciden con documentos de este tipo. Esta cadena se muestra en la lista desplegable Lista de archivos de tipo en el cuadro de diálogo Abrir archivo, por ejemplo, «Hojas de cálculo», [*.xls]». Si no se especifica, el tipo de documento no es accesible mediante el comando Abrir archivo.CDocTemplate::filterExt
Extensión de documentos de este tipo, por ejemplo, «.xls». Si no se especifica, el tipo de documento no es accesible mediante el comando Abrir archivo.CDocTemplate::regFileTypeId
Identificador del tipo de documento que se va a almacenar en la base de datos de registro que mantiene Windows. Esta cadena es solo para uso interno, por ejemplo, «ExcelWorksheet». Si no se especifica, el tipo de documento no se puede registrar con el Administrador de archivos de Windows.CDocTemplate::regFileTypeName
Nombre del tipo de documento que se va almacenar en la base de datos de registro. Esta cadena se muestra mostrar en cajas de diálogo de las aplicaciones que acceden a la base de datos del registro, por ejemplo, «Hoja de cálculo de Microsoft Excel».
Valor devuelto
Distinto de cero si se encontró la substring especificada, de lo contrario 0.
Comentarios
Llame a esta función para recuperar una substring específica que describe el tipo de documento. La cadena que contiene estas substrings se almacena en la plantilla de documento y se deriva de una cadena en la plantilla de recursos de la aplicación. El marco llama a esta función para obtener las cadenas que necesita para la interfaz de usuario de la aplicación. Si ha especificado una extensión de nombre de archivo para los documentos de la aplicación, el marco también llama a esta función al agregar una entrada a la base de datos de registro de Windows, con lo que se permiten que los documentos se abran desde el Administrador de archivos de Windows.
Llame solo a esta función si deriva su propia clase de CDocTemplate
.
CDocTemplate::GetFirstDocPosition
Recupera la posición del primer documento asociado a la plantilla.
virtual POSITION GetFirstDocPosition() const = 0;
Valor devuelto
Valor POSITION
que se puede usar para recorrer en iteración la lista de documentos asociados a esta plantilla de documento o NULL
si la lista está vacía.
Comentarios
Use esta función para obtener la posición del primer documento de la lista de documentos asociados a esta plantilla. Use el valor POSITION
como argumento de CDocTemplate::GetNextDoc
para recorrer en iteración la lista de documentos asociados a la plantilla.
CSingleDocTemplate
y CMultiDocTemplate
invalidan esta función virtual pura. Cualquier clase que derive de CDocTemplate
también debe invalidar esta función.
CDocTemplate::GetNextDoc
Recupera el elemento de la lista identificado por rPos
y, luego, establece rPos
en el valor POSITION
de la entrada siguiente de la lista.
virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;
Valor devuelto
Puntero al siguiente documento de la lista de documentos asociados a esta plantilla.
Parámetros
rPos
Referencia a un valor POSITION
devuelto a una llamada anterior a GetFirstDocPosition
o GetNextDoc
.
Comentarios
Si el elemento recuperado es el último de la lista, el valor nuevo de rPos
se establece en NULL
.
Puede usar GetNextDoc
en un bucle de iteración hacia delante si establece la posición inicial con una llamada a GetFirstDocPosition
.
Debe asegurarse de que el valor POSITION
representa una posición válida en la lista. Si no es válida, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class).
CDocTemplate::InitialUpdateFrame
Inicializa la ventana de marco y de forma opcional la hace visible.
virtual void InitialUpdateFrame(
CFrameWnd* pFrame,
CDocument* pDoc,
BOOL bMakeVisible = TRUE);
Parámetros
pFrame
Ventana de marco que necesita la actualización inicial.
pDoc
Documento al que está asociado el marco. Puede ser NULL
.
bMakeVisible
Indica si el marco debe hacerse visible y activo.
Comentarios
Llame a IntitialUpdateFrame
después de crear un nuevo marco con CreateNewFrame
. Al llamar a esta función, las vistas en la ventana de marco reciben sus llamadas OnInitialUpdate
. Además, si no había anteriormente una vista activa, la vista principal de la ventana de marco se activa, la vista principal es una vista con un id. secundario de AFX_IDW_PANE_FIRST
. Por último, la ventana de marco se hace visible si bMakeVisible
no es cero. Si bMakeVisible
es cero, el foco actual y el estado visible de la ventana de marco permanecerán sin cambios.
No es necesario llamar a esta función al usar la implementación del marco de Archivo nuevo y Abrir archivo.
CDocTemplate::LoadTemplate
Carga los recursos de determinada CDocTemplate
o clase derivada.
virtual void LoadTemplate();
Comentarios
El marco llama a esta función miembro para cargar los recursos de una determinada CDocTemplate
o clase derivada. Se suele llamar durante la construcción, excepto cuando la plantilla se construye globalmente. En ese caso, la llamada a LoadTemplate
se retrasa hasta que se llama a CWinApp::AddDocTemplate
.
CDocTemplate::MatchDocType
Determina el grado de confianza en la coincidencia entre un tipo de documento y la plantilla.
virtual Confidence MatchDocType(
LPCTSTR lpszPathName,
CDocument*& rpDocMatch);
Parámetros
lpszPathName
Nombre de la ruta de acceso del archivo cuyo tipo se va a determinar.
rpDocMatch
Puntero a un documento al que se asigna el documento coincidente, si el archivo que especifica lpszPathName
ya está abierto.
Valor devuelto
Valor de la enumeración Confidence
, que se define como se señala a continuación:
enum Confidence
{
noAttempt,
maybeAttemptForeign,
maybeAttemptNative,
yesAttemptForeign,
yesAttemptNative,
yesAlreadyOpen
};
Comentarios
Use esta función para determinar el tipo de la plantilla del documento que se usa para abrir un archivo. Si la aplicación admite varios tipos de archivo, por ejemplo, puede usar esta función para determinar cuál de esas plantillas de documento disponibles es la adecuada para determinado archivo al llamar a MatchDocType
para cada plantilla a su vez y al elegir una plantilla en función del valor de confianza devuelto.
Si el archivo que especifica lpszPathName
ya está abierto, esta función devuelve CDocTemplate::yesAlreadyOpen
y copia el objeto de CDocument
en el objeto en rpDocMatch
.
Si el archivo no está abierto pero la extensión de lpszPathName
coincide con la extensión que especifica CDocTemplate::filterExt
, esta función devuelve CDocTemplate::yesAttemptNative
y establece rpDocMatch
en NULL
. Para más información sobre CDocTemplate::filterExt
, consulte CDocTemplate::GetDocString
.
Si ningún caso es True, la función devuelve CDocTemplate::yesAttemptForeign
.
La implementación predeterminada no devuelve CDocTemplate::maybeAttemptForeign
ni CDocTemplate::maybeAttemptNative
. Invalide esta función para implementar la lógica de coincidencia de tipos adecuada para la aplicación, quizás con estos dos valores de la enumeración Confidence
.
CDocTemplate::OpenDocumentFile
Abre un archivo que especifica una ruta de acceso.
virtual CDocument* OpenDocumentFile(LPCTSTR lpszPathName) = 0;
virtual CDocument* OpenDocumentFile(
LPCTSTR lpszPathName,
BOOL bAddToMRU) = 0;
Parámetros
lpszPathName
[in] Puntero a la ruta de acceso del archivo que contiene el documento que se va a abrir.
bAddToMRU
[in] TRUE
indica que el documento es uno de los archivos más recientes; FALSE
indica que el documento no es uno de los archivos más recientes.
Valor devuelto
Puntero al documento cuyo archivo recibe el nombre de lpszPathName
; si no se realiza correctamente NULL
.
Comentarios
Abre el archivo cuya ruta de acceso se especifica mediante lpszPathName
. Si lpszPathName
es NULL
, se crea un nuevo archivo contiene un documento del tipo asociado a esta plantilla.
CDocTemplate::RemoveDocument
Quita el documento al que apunta pDoc
de la lista de documentos asociados a esta plantilla.
virtual void RemoveDocument(CDocument* pDoc);
Parámetros
pDoc
Puntero al documento que se va a quitar.
Comentarios
Las clases derivadas CMultiDocTemplate
y CSingleDocTemplate
invalidan esta función. Si deriva su propia clase de plantilla de documento de CDocTemplate
, su clase derivada debe invalidar esta función.
CDocTemplate::SaveAllModified
Guarda todos los documentos modificados.
virtual BOOL SaveAllModified();
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto será distinto de cero. En caso contrario, será 0.
CDocTemplate::SetContainerInfo
Determina los recursos de los contenedores OLE al editar un elemento OLE local.
void SetContainerInfo(UINT nIDOleInPlaceContainer);
Parámetros
nIDOleInPlaceContainer
Id. de los recursos usados cuando se activa un objeto incrustado.
Comentarios
Llame a esta función para establecer los recursos que se van a usar cuando se activan localmente objetos OLE. Entre estos recursos se pueden incluir menús y tablas de aceleradores. Esta función se suele llamar en la función CWinApp::InitInstance
de la aplicación.
El menú asociado a nIDOleInPlaceContainer
contiene separadores que permiten que el menú del elemento local activado para que se combine con el menú de la aplicación contenedora. Si desea más información sobre cómo combinar menús de contenedor y servidor, consulte el artículo Menus and Resources (OLE), (Menús y recursos [OLE]).
CDocTemplate::SetDefaultTitle
Puede llamar a esta función para cargar el título predeterminado del documento y lo muestra en la barra de título del documento.
virtual void SetDefaultTitle(CDocument* pDocument) = 0;
Parámetros
pDocument
Puntero al documento cuyo título se va a establecer.
Comentarios
Para obtener más información sobre el título predeterminado, consulte la descripción de CDocTemplate::docName
en CDocTemplate::GetDocString
.
CDocTemplate::SetServerInfo
Determina los recursos y las clases cuando el documento de servidor se incrusta o se edita localmente.
void SetServerInfo(
UINT nIDOleEmbedding,
UINT nIDOleInPlaceServer = 0,
CRuntimeClass* pOleFrameClass = NULL,
CRuntimeClass* pOleViewClass = NULL);
Parámetros
nIDOleEmbedding
Id. de los recursos usados cuando se abre una objeto incrustado en una ventana independiente.
nIDOleInPlaceServer
Id. de los recursos usados cuando se activa localmente un objeto incrustado.
pOleFrameClass
Puntero a una estructura CRuntimeClass
que contiene información de clase para el objeto de ventana de marco creado cuando se produce la activación en contexto.
pOleViewClass
Puntero a una estructura CRuntimeClass
que contiene información de clase para el objeto de vista creado cuando se produce la activación en contexto.
Comentarios
Llame a esta función miembro para identificar recursos que usará la aplicación de servidor cuando se solicita la activación de un objeto incrustado. Estos recursos constan de menús y tablas de aceleradores. Esta función se suele llamar en la InitInstance
de la aplicación.
El menú asociado a nIDOleInPlaceServer
contiene separadores que permiten que el menú de servidor se combine con el menú del contenedor. Si desea más información sobre cómo combinar menús de contenedor y servidor, consulte el artículo Menus and Resources (OLE), (Menús y recursos [OLE]).
CDocTemplate::CreatePreviewFrame
Crea un marco secundario que se usa para la vista previa enriquecida.
CFrameWnd* CreatePreviewFrame(
CWnd* pParentWnd,
CDocument* pDoc);
Parámetros
pParentWnd
Puntero a una ventana primaria, que proporciona normalmente Shell.
pDoc
Puntero a un objeto de documento, cuyo contenido se mostrará en vista previa.
Valor devuelto
Puntero válido a un objeto CFrameWnd
o NULL si se produce error en la creación.
Comentarios
CDocTemplate::SetPreviewInfo
Configura el controlador de vista previa.
void SetPreviewInfo(
UINT nIDPreviewFrame,
CRuntimeClass* pPreviewFrameClass = NULL,
CRuntimeClass* pPreviewViewClass = NULL);
Parámetros
nIDPreviewFrame
Especifica un id. de recurso de marco de vista previa.
pPreviewFrameClass
Especifica un puntero a una estructura de información de clase en tiempo de ejecución del marco de vista previa.
pPreviewViewClass
Especifica un puntero a una estructura de información de clase en tiempo de ejecución de la vista previa.
Comentarios
Consulte también
CCmdTarget
(clase)
Gráfico de jerarquías
CSingleDocTemplate
(clase)
CMultiDocTemplate
(clase)
CDocument
(clase)
CView
(clase)
CScrollView
(clase)
CEditView
(clase)
CFormView
(clase)
CFrameWnd
(clase)
CMDIChildWnd
(clase)