Compartir a través de


Clase CDocument

Proporciona la funcionalidad básica para las clases definidas por el usuario del documento.

Sintaxis

class CDocument : public CCmdTarget

Miembros

Constructores públicos

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

Métodos públicos

Nombre Descripción
CDocument::AddView Adjunta una vista al documento.
CDocument::BeginReadChunks Inicializa la lectura de fragmentos.
CDocument::CanCloseFrame Invalidable avanzado; se llama antes de cerrar una ventana de marco que ve este documento.
CDocument::ClearChunkList Borra la lista de fragmentos.
CDocument::ClearPathName Borra la ruta del objeto documento.
CDocument::DeleteContents Se llama para realizar la limpieza del documento.
CDocument::FindChunk Busca un fragmento con el GUID especificado.
CDocument::GetAdapter Devuelve un puntero a la interfaz de implementación de objetos IDocument.
CDocument::GetDocTemplate Devuelve un puntero a la plantilla de documento que describe el tipo del documento.
CDocument::GetFile Devuelve un puntero al objeto deseado CFile.
CDocument::GetFirstViewPosition Devuelve la posición de la primera en la lista de vistas; se usa para comenzar la iteración.
CDocument::GetNextView Recorre en iteración la lista de vistas asociadas al documento.
CDocument::GetPathName Devuelve la ruta de acceso del archivo de datos del documento.
CDocument::GetThumbnail Se llama a para crear un mapa de bits que usará el proveedor de miniaturas para mostrar la miniatura.
CDocument::GetTitle Devuelve el título del documento.
CDocument::InitializeSearchContent Se llama para inicializar el contenido de búsqueda para el controlador de búsqueda.
CDocument::IsModified Indica si el documento ha sido modificado desde que se guardó por última vez.
CDocument::IsSearchAndOrganizeHandler Indica si esta instancia de CDocument objeto se creó para el controlador de búsqueda y organización.
CDocument::LoadDocumentFromStream Se llama para cargar datos del documento desde la secuencia.
CDocument::OnBeforeRichPreviewFontChanged Se llama antes de cambiar la fuente Rich Preview.
CDocument::OnChangedViewList Se llama después de agregar o quitar una vista en un documento.
CDocument::OnCloseDocument Se llama para cerrar el documento.
CDocument::OnCreatePreviewFrame Lo llama el marco cuando necesita crear un marco de vista previa para La versión preliminar enriquecida.
CDocument::OnDocumentEvent Lo llama el marco en respuesta a un evento de documento.
CDocument::OnDrawThumbnail Invalide este método en una clase derivada para dibujar contenido de miniatura.
CDocument::OnLoadDocumentFromStream Lo llama el marco cuando necesita cargar los datos del documento desde el flujo.
CDocument::OnNewDocument Se llama para crear un nuevo documento.
CDocument::OnOpenDocument Se llama para abrir un documento existente.
CDocument::OnPreviewHandlerQueryFocus Dirige el controlador de vista previa para que devuelva desde la llamada HWND a la función GetFocus.
CDocument::OnPreviewHandlerTranslateAccelerator Dirige el controlador de vista previa para controlar una pulsación de tecla pasada desde la bomba de mensajes del proceso en el que se ejecuta el controlador de vista previa.
CDocument::OnRichPreviewBackColorChanged Se llama cuando ha cambiado el color de fondo de la vista previa enriquecida.
CDocument::OnRichPreviewFontChanged Se llama cuando ha cambiado la fuente Rich Preview.
CDocument::OnRichPreviewSiteChanged Se llama cuando el sitio de vista previa enriquecida ha cambiado.
CDocument::OnRichPreviewTextColorChanged Se llama cuando ha cambiado el color del texto Rich Preview.
CDocument::OnSaveDocument Se llama para guardar el documento en el disco.
CDocument::OnUnloadHandler Lo llama el marco cuando se descarga el controlador de vista previa.
CDocument::PreCloseFrame Se llama antes de que se cierre la ventana de marco.
CDocument::ReadNextChunkValue Lee el siguiente valor de fragmento.
CDocument::ReleaseFile Libera un archivo para que esté disponible para su uso por otras aplicaciones.
CDocument::RemoveChunk Quita un fragmento con especificado GUID.
CDocument::RemoveView Desasocia una vista del documento.
CDocument::ReportSaveLoadException Invalidable avanzado; se llama cuando no se puede completar una operación abierta o guardada debido a una excepción.
CDocument::SaveModified Invalidable avanzado; se llama para preguntar al usuario si se debe guardar el documento.
CDocument::SetChunkValue Establece un valor de fragmento.
CDocument::SetModifiedFlag Establece una marca que indica que ha modificado el documento desde que se guardó por última vez.
CDocument::SetPathName Establece la ruta de acceso del archivo de datos utilizado por el documento.
CDocument::SetTitle Establece el título del documento.
CDocument::UpdateAllViews Notifica a todas las vistas que se han modificado los documentos.

Métodos protegidos

Nombre Descripción
CDocument::OnFileSendMail Envía un mensaje de correo electrónico con el documento adjunto.
CDocument::OnUpdateFileSendMail Habilita el comando Enviar correo si la compatibilidad con el correo está presente.

Miembros de datos públicos

Nombre Descripción
CDocument::m_bGetThumbnailMode Especifica el objeto CDocument creado por dllhost para miniaturas. Debe comprobarse en CView::OnDraw.
CDocument::m_bPreviewHandlerMode Especifica que CDocument el objeto se creó mediante prevhost para Rich Preview. Debe comprobarse en CView::OnDraw.
CDocument::m_bSearchMode Especifica que el indexador u otra aplicación de búsqueda creó el CDocument objeto.
CDocument::m_clrRichPreviewBackColor Especifica el color de fondo de la ventana Vista previa enriquecida. El host establece este color.
CDocument::m_clrRichPreviewTextColor Especifica el color de primer plano de la ventana Vista previa enriquecida. El host establece este color.
CDocument::m_lfRichPreviewFont Especifica la fuente de texto para la ventana Vista previa enriquecida. El host establece esta información de fuente.

Comentarios

Un documento representa la unidad de datos que el usuario suele abrir con el comando File Open y guardar con el comando File Save.

CDocument admite operaciones estándar, como crear un documento, cargarlo y guardarlo. El marco manipula documentos mediante la interfaz definida por CDocument.

Una aplicación puede admitir más de un tipo de documento; por ejemplo, una aplicación podría admitir hojas de cálculo y documentos de texto. Cada tipo de documento tiene una plantilla de documento asociada; la plantilla de documento especifica qué recursos (por ejemplo, menú, icono o tabla de aceleradores) se usan para ese tipo de documento. Cada documento contiene un puntero a su objeto asociado CDocTemplate.

Los usuarios interactúan con un documento a través de los CView objetos asociados a él. Una vista representa una imagen del documento en una ventana de marco e interpreta la entrada del usuario como operaciones en el documento. Un documento puede tener varias vistas asociadas. Cuando el usuario abre una ventana en un documento, el marco crea una vista y la adjunta al documento. La plantilla de documento especifica qué tipo de vista y ventana de marco se usan para mostrar cada tipo de documento.

Los documentos forman parte del enrutamiento de comandos estándar del marco y, por tanto, reciben comandos de componentes estándar de la interfaz de usuario (como el elemento de menú Guardar archivo). Un documento recibe comandos reenviados por la vista activa. Si el documento no controla un comando determinado, reenvía el comando a la plantilla de documento que la administra.

Cuando se modifican los datos de un documento, cada una de sus vistas debe reflejar esas modificaciones. CDocument proporciona la UpdateAllViews función miembro para que notifique las vistas de estos cambios, por lo que las vistas se pueden volver a pintar según sea necesario. El marco también pide al usuario que guarde un archivo modificado antes de cerrarlo.

Para implementar documentos en una aplicación típica, debe hacer lo siguiente:

  • Derivar una clase de CDocument para cada tipo de documento.

  • Agregar variables de miembro para almacenar los datos de cada documento.

  • Implementa funciones miembro para leer y modificar los datos del documento. Las vistas del documento son los usuarios más importantes de estas funciones miembro.

  • Invalida la CObject::Serialize función miembro de la clase de documento para escribir y leer los datos del documento hacia y desde el disco.

CDocument admite el envío del documento por medio del correo electrónico, si presenta la compatibilidad con correo electrónico (MAPI). Consulte los artículos Compatibilidad con MAPI y MAPI en MFC.

Para obtener más información sobre CDocument, vea Serialización, Temas de arquitectura de documentos y vistas y Creación de documentos o vistas.

Jerarquía de herencia

CObject

CCmdTarget

CDocument

Requisitos

Encabezado: afxwin.h

CDocument::AddView

Llama a esta función para adjuntar una vista al documento.

void AddView(CView* pView);

Parámetros

pView
Apunta a la vista que se va a agregar.

Comentarios

Esta función agrega la vista especificada a la lista de vistas asociadas al documento; la función también establece el puntero de documento de la vista en este documento. El marco llama a esta función al adjuntar un objeto de vista recién creado a un documento; esto ocurre en respuesta a un comando Archivo Nuevo, Abrir archivo o Nueva ventana o cuando se divide una ventana divisora.

Llama a esta función solo si vas a crear y adjuntar manualmente una vista. Normalmente, permitirá que el marco conecte documentos y vistas definiendo un CDocTemplate objeto para asociar una clase de documento, una clase de vista y una clase de ventana de marco.

Ejemplo

// The following example toggles two views in an SDI (single document
// interface) frame window. A design decision must be made as to
// whether to leave the inactive view connected to the document,
// such that the inactive view continues to receive OnUpdate
// notifications from the document. It is usually desirable to
// keep the inactive view continuously in sync with the document, even
// though it is inactive. However, doing so incurs a performance cost,
// as well as the programming cost of implementing OnUpdate hints.
// It may be less expensive, in terms of performance and/or programming,
// to re-sync the inactive view with the document only with it is
// reactivated. This example illustrates this latter approach, by
// reconnecting the newly active view and disconnecting the newly
// inactive view, via calls to CDocument::AddView and RemoveView.

void CMainFrame::OnViewChange(UINT nCmdID)
// There is an ON_COMMAND_RANGE message map entry associated with
// OnViewChange:
// ON_COMMAND_RANGE(ID_VIEW_CHANGE1, ID_VIEW_CHANGE2, &OnViewChange)
{
   CView *pViewAdd;
   CView *pViewRemove;
   CDocument *pDoc = GetActiveDocument();

   // cvView1 and cvView2 are enum members defined in my CMainFrame class
   if ((nCmdID == ID_VIEW_CHANGE1) && (m_currentView == cvView1))
      return;
   if ((nCmdID == ID_VIEW_CHANGE2) && (m_currentView == cvView2))
      return;

   if (nCmdID == ID_VIEW_CHANGE2)
   {
      if (m_pView2 == NULL)
      {
         m_pView1 = GetActiveView();
         m_pView2 = new CMyView2;

         //Note that if OnSize has been overridden in CMyView2
         //and GetDocument() is used in this override it can
         //cause assertions and, if the assertions are ignored,
         //cause access violation.

         m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this,
                          AFX_IDW_PANE_FIRST + 1, NULL);
      }
      pViewAdd = m_pView2;
      pViewRemove = m_pView1;
      m_currentView = cvView2;
   }
   else
   {
      pViewAdd = m_pView1;
      pViewRemove = m_pView2;
      m_currentView = cvView1;
   }

   // Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
   // so that CFrameWnd::RecalcLayout will allocate to this
   // "first pane" that portion of   the frame window's client area
   // not allocated to control   bars.  Set the child i.d. of the
   // other view to anything other than AFX_IDW_PANE_FIRST; this
   // examples switches the child id's of the two views.

   int nSwitchChildID = pViewAdd->GetDlgCtrlID();
   pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
   pViewRemove->SetDlgCtrlID(nSwitchChildID);

   // Show the newly active view and hide the inactive view.

   pViewAdd->ShowWindow(SW_SHOW);
   pViewRemove->ShowWindow(SW_HIDE);

   // Connect the newly active view to the document, and
   // disconnect the inactive view.
   pDoc->AddView(pViewAdd);
   pDoc->RemoveView(pViewRemove);

   SetActiveView(pViewAdd);
   RecalcLayout();
}

CDocument::BeginReadChunks

Inicializa la lectura de fragmentos.

virtual void BeginReadChunks ();

Comentarios

CDocument::CanCloseFrame

Lo llama el marco antes de que se cierre una ventana de marco que muestre el documento.

virtual BOOL CanCloseFrame(CFrameWnd* pFrame);

Parámetros

pFrame
Apunta a la ventana de marco de una vista adjunta al documento.

Valor devuelto

Distinto de cero si es seguro cerrar la ventana de marco; de lo contrario, 0.

Comentarios

La implementación predeterminada comprueba si hay otras ventanas de marco que muestran el documento. Si la ventana de marco especificada es la última que muestra el documento, la función pide al usuario que guarde el documento si se ha modificado. Anule esta función si desea realizar un procesamiento especial cuando se cierra una ventana de marco. Se trata de una invalidación avanzada.

CDocument::CDocument

Construye un objeto CDocument.

CDocument();

Comentarios

El marco controla la creación de documentos. Invalida la función miembro para realizar la OnNewDocument inicialización por documento; esto es especialmente importante en las aplicaciones de interfaz de documento único (SDI).

CDocument::ClearChunkList

Borra la lista de fragmentos.

virtual void ClearChunkList ();

Comentarios

CDocument::ClearPathName

Borra la ruta del objeto documento.

virtual void ClearPathName();

Comentarios

Borrar la ruta de acceso de un CDocument objeto hace que la aplicación solicite al usuario cuando el documento se guarde a continuación. Esto hace que un comando Guardar se comporte como un comando Guardar como.

CDocument::DeleteContents

Lo llama el marco de trabajo para eliminar los datos del documento sin destruir el CDocument propio objeto.

virtual void DeleteContents();

Comentarios

Se llama justo antes de que se destruya el documento. También se llama para asegurarse de que un documento está vacío antes de reutilizarlo. Esto es especialmente importante para una aplicación SDI, que solo usa un documento; el documento se reutiliza cada vez que el usuario crea o abre otro documento. Llame a esta función para implementar un comando "Editar borrar todo" o similar que elimine todos los datos del documento. La implementación predeterminada de esta función no hace nada. Invalide esta función para eliminar los datos del documento.

Ejemplo

// This example is the handler for an Edit Clear All command.
void CExampleDoc::OnEditClearAll()
{
   DeleteContents();
   UpdateAllViews(NULL);
}

void CExampleDoc::DeleteContents()
{
   // Re-initialize document data here.
}

CDocument::FindChunk

Busca un fragmento con el GUID especificado.

virtual POSITION FindChunk(
    REFCLSID guid,
    DWORD pid);

Parámetros

guid
Especifica el GUID de un fragmento que se va a buscar.

pid
Especifica un PID de un fragmento que se va a buscar.

Valor devuelto

Coloque en la lista de fragmentos internos si se realiza correctamente. De lo contrario, NULLes .

Comentarios

CDocument::GetAdapter

Devuelve un puntero a la interfaz de implementación de objetos IDocument.

virtual ATL::IDocument* GetAdapter();

Valor devuelto

Un puntero a un objeto que implementa la interfaz IDocument.

Comentarios

CDocument::GetDocTemplate

Llama a esta función para obtener un puntero a la plantilla de documento para este tipo de documento.

CDocTemplate* GetDocTemplate() const;

Valor devuelto

Un puntero a la plantilla de documento para este tipo de documento o NULL si el documento no está administrado por una plantilla de documento.

Ejemplo

// This example accesses the doc template object to construct
// a default document name such as SHEET.XLS, where "sheet"
// is the base document name and ".xls" is the file extension
// for the document type.
CString strDefaultDocName, strBaseName, strExt;
CDocTemplate *pDocTemplate = GetDocTemplate();
if (!pDocTemplate->GetDocString(strBaseName, CDocTemplate::docName) || !pDocTemplate->GetDocString(strExt, CDocTemplate::filterExt))
{
   AfxThrowUserException(); // These doc template strings will
                            // be available if you created the application using AppWizard
                            // and specified the file extension as an option for
                            // the document class produced by AppWizard.
}
strDefaultDocName = strBaseName + strExt;

CDocument::GetFile

Llama a esta función miembro para obtener un puntero a un objeto CFile.

virtual CFile* GetFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError);

Parámetros

lpszFileName
Cadena que es la ruta de acceso al archivo deseado. La ruta de acceso puede ser relativa o absoluta.

pError
Un puntero a un objeto de excepción de archivo existente que indica el estado de finalización de la operación.

nOpenFlags
Modo de uso compartido y acceso. Especifica la acción que se debe realizar al abrir el archivo. Puedes combinar las opciones enumeradas en el constructor CFile CFile::CFile mediante el operador OR bit a bit (|). Se requieren un permiso de acceso y una opción de recurso compartido; los modos modeCreate y modeNoInherit son opcionales.

Valor devuelto

Puntero a un objeto CFile .

CDocument::GetFirstViewPosition

Llama a esta función para obtener la posición de la primera vista de la lista de vistas asociadas al documento.

virtual POSITION GetFirstViewPosition() const;

Valor devuelto

Valor POSITION que se puede usar para la iteración con la GetNextView función miembro.

Ejemplo

//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView *pView = GetNextView(pos);
      pView->UpdateWindow();
   }
}

CDocument::GetNextView

Llama a esta función para recorrer en iteración todas las vistas del documento.

virtual CView* GetNextView(POSITION& rPosition) const;

Parámetros

rPosition
Una referencia a un valor POSITION devuelto por una llamada anterior de las funciones miembro GetNextView o GetFirstViewPosition. Este valor no debe ser NULL.

Valor devuelto

Un puntero a la vista identificada por rPosition.

Comentarios

La función devuelve la vista identificada por rPosition y, a continuación, establece rPosition en el valor POSITION de la vista siguiente de la lista. Si la vista recuperada es la última de la lista, rPosition se establece en NULL.

Ejemplo

//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView *pView = GetNextView(pos);
      pView->UpdateWindow();
   }
}

CDocument::GetPathName

Llame a esta función para obtener la ruta de acceso completa del archivo de disco del documento.

const CString& GetPathName() const;

Valor devuelto

Ruta de acceso completa del documento. Esta cadena está vacía si el documento no se ha guardado o no tiene asociado un archivo de disco.

CDocument::GetThumbnail

Crea un mapa de bits que usará el proveedor de miniaturas para mostrar la miniatura.

virtual BOOL GetThumbnail(
    UINT cx,
    HBITMAP* phbmp,
    DWORD* pdwAlpha);

Parámetros

cx
Especifica el ancho y alto del mapa de bits.

phbmp
Contiene un identificador para un mapa de bits, cuando la función vuelve correctamente.

pdwAlpha
Contiene un valor DWORD de canal alfa que especifica cuando la función devuelve correctamente.

Valor devuelto

Devuelve TRUE si un mapa de bits de la miniatura se creó correctamente; de lo contrario FALSE.

Comentarios

CDocument::GetTitle

Llame a esta función para obtener el título del documento, que normalmente se deriva del nombre de archivo del documento.

const CString& GetTitle() const;

Valor devuelto

El valor de este parámetro se corresponde con el título del documento en cuestión.

CDocument::InitializeSearchContent

Se llama para inicializar el contenido de búsqueda para el controlador de búsqueda.

virtual void InitializeSearchContent ();

Comentarios

Invalide este método en una clase derivada para inicializar el contenido de búsqueda. El contenido debe ser una cadena con partes delimitadas por «;». Por ejemplo, «point; rectángulo; ole item».

CDocument::IsModified

Llama a esta función para determinar si el documento se ha modificado desde que se guardó por última vez.

virtual BOOL IsModified();

Valor devuelto

Distinto de cero si el estado del documento se ha modificado desde que se guardó por última vez; de lo contrario es 0.

CDocument::IsSearchAndOrganizeHandler

Indica si esta instancia de CDocument se creó para el controlador de búsqueda y organización.

BOOL IsSearchAndOrganizeHandler() const;

Valor devuelto

Devuelve TRUE si se creó esta instancia de CDocument para el controlador de búsqueda y organización.

Comentarios

Actualmente, esta función solo devuelve para los controladores de vista previa enriquecida TRUE implementados en un servidor fuera de proceso. Puede establecer las marcas adecuadas (m_bPreviewHandlerMode, m_bSearchMode, m_bGetThumbnailMode) en el nivel de aplicación para que esta función devuelva TRUE.

CDocument::LoadDocumentFromStream

Se llama para cargar datos del documento desde la secuencia.

virtual HRESULT LoadDocumentFromStream(
    IStream* pStream,
    DWORD dwGrfMode);

Parámetros

pStream
Puntero a una estructura. El Shell proporciona esta secuencia.

dwGrfMode
Modo de acceso a la secuencia.

Valor devuelto

S_OK es si la operación de carga se realiza correctamente; de lo contrario HRESULT, se produce un código de error.

Comentarios

Puedes invalidar este método en una clase derivada para personalizar cómo cargar datos desde la secuencia.

CDocument::m_bGetThumbnailMode

Especifica el objeto CDocument creado por dllhost para miniaturas. Debe comprobarse en CView::OnDraw.

BOOL m_bGetThumbnailMode;

Comentarios

TRUE indica que dllhost ha creado el documento para miniaturas.

CDocument::m_bPreviewHandlerMode

Especifica que el objeto CDocument se creó mediante prevhost para Rich Preview. Debe comprobarse en CView::OnDraw.

BOOL m_bPreviewHandlerMode;

Comentarios

TRUE indica que el documento se creó mediante prevhost para Rich Preview.

CDocument::m_bSearchMode

Especifica que el indexador u otra aplicación de búsqueda creó el objeto CDocument.

BOOL m_bSearchMode;

Comentarios

TRUE indica que el indexador creó el documento o por otra aplicación de búsqueda.

CDocument::m_clrRichPreviewBackColor

Especifica el color de fondo de la ventana Rich Preview. El host establece este color.

COLORREF m_clrRichPreviewBackColor;

Comentarios

CDocument::m_clrRichPreviewTextColor

Especifica el color de primer plano de la ventana Rich Preview. El host establece este color.

COLORREF m_clrRichPreviewTextColor;

Comentarios

CDocument::m_lfRichPreviewFont

Especifica la fuente de texto de la ventana Rich Preview. El host establece esta información de fuente.

CFont m_lfRichPreviewFont;

Comentarios

CDocument::OnBeforeRichPreviewFontChanged

Se llama antes de cambiar la fuente Rich Preview.

virtual void OnBeforeRichPreviewFontChanged();

Comentarios

CDocument::OnChangedViewList

El marco lo llama después de agregar o quitar una vista en un documento.

virtual void OnChangedViewList();

Comentarios

La implementación predeterminada de esta función comprueba si se quita la última vista y, si es así, elimina el documento. Invalida esta función si desea realizar un procesamiento especial cuando el marco agrega o quita una vista. Por ejemplo, si deseas que un documento permanezca abierto incluso cuando no haya vistas adjuntas a él, invalida esta función.

CDocument::OnCloseDocument

Lo llama el marco cuando se cierra el documento, normalmente como parte del comando Cerrar archivo.

virtual void OnCloseDocument();

Comentarios

La implementación predeterminada de esta función destruye todos los marcos usados para ver el documento, cierra la vista, limpia el contenido del documento y, a continuación, llama a la DeleteContents función miembro para eliminar los datos del documento.

Invalida esta función si desea realizar un proceso de limpieza especial cuando el marco de trabajo cierra un 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. Debe llamar a la versión de clase base de esta función desde la invalidación.

CDocument::OnCreatePreviewFrame

Lo llama el marco cuando necesita crear un marco de vista previa para La versión preliminar enriquecida.

virtual BOOL OnCreatePreviewFrame();

Valor devuelto

Devuelve TRUE si el panel se crea correctamente; de lo contrario, FALSE.

Comentarios

CDocument::OnDocumentEvent

Lo llama el marco en respuesta a un evento de documento.

virtual void OnDocumentEvent(DocumentEvent deEvent);

Parámetros

deEvent
[in] Un tipo de datos enumerado que describe el tipo de evento.

Comentarios

Los eventos de documento pueden afectar a varias clases. Este método es responsable de controlar los eventos de documento que afectan a las clases distintas de la CDocument clase. Actualmente, la única clase que debe responder a eventos de documento es la CDataRecoveryHandler clase. La CDocument clase tiene otros métodos reemplazables responsables de controlar el efecto en CDocument.

En la tabla siguiente se enumeran los valores posibles de deEvent y los eventos a los que corresponden.

Valor Evento correspondiente
onAfterNewDocument Se creó un nuevo documento.
onAfterOpenDocument Se abrió un nuevo documento.
onAfterSaveDocument El documento se guardó.
onAfterCloseDocument Se cerró el documento.

CDocument::OnDrawThumbnail

Invalida este método en una clase derivada para dibujar contenido de la miniatura.

virtual void OnDrawThumbnail(
    CDC& dc,
    LPRECT lprcBounds);

Parámetros

dc
Una referencia a un contexto de dispositivo.

lprcBounds
Especifica un rectángulo delimitador del área donde se debe dibujar la miniatura.

Comentarios

CDocument::OnFileSendMail

Envía un mensaje por medio del host de correo residente, (si existe), con el documento como adjunto.

void OnFileSendMail();

Comentarios

OnFileSendMail llama a OnSaveDocument para que serialice (guarde) documentos sin título y modificados en un archivo temporal, que se envía después por correo electrónico. Si el documento no se ha modificado, no es necesario un archivo temporal y se envía el original. OnFileSendMail carga MAPI32.DLL si aún no lo ha hecho.

Una implementación especial de OnFileSendMail para COleDocument identificadores de archivos compuestos correctamente.

CDocument admite el envío del documento por medio del correo electrónico, si presenta la compatibilidad con correo electrónico (MAPI). Consulta los artículos Temas MAPI y MAPI en MFC.

CDocument::OnLoadDocumentFromStream

Lo llama el marco cuando necesita cargar los datos del documento desde el flujo.

virtual HRESULT OnLoadDocumentFromStream(
    IStream* pStream,
    DWORD grfMode);

Parámetros

pStream
Un puntero a una secuencia entrante.

grfMode
Modo de acceso a la secuencia.

Valor devuelto

S_OK si la carga tiene éxito; en caso contrario, un código de error.

Comentarios

CDocument::OnNewDocument

Lo llama el marco como parte del comando Archivo nuevo.

virtual BOOL OnNewDocument();

Valor devuelto

Distinto de cero si el documento se inicializó correctamente; de lo contrario, 0.

Comentarios

La implementación predeterminada de esta función llama a la DeleteContents función miembro para asegurarse de que el documento está vacío y, a continuación, marca el nuevo documento como limpio. Invalide esta función para inicializar la estructura de datos de un nuevo documento. Debe llamar a la versión de clase base de esta función desde la invalidación.

Si el usuario elige el comando Archivo nuevo en una aplicación SDI, el marco usa esta función para reinicializar el documento existente, en lugar de crear uno nuevo. Si el usuario elige Archivo nuevo en una aplicación de interfaz de documento múltiple (MDI), el marco crea un nuevo documento cada vez y, a continuación, llama a esta función para inicializarlo. Debes colocar el código de inicialización en esta función en lugar de en el constructor para que el comando Archivo nuevo sea eficaz en las aplicaciones SDI.

Ten en cuenta que hay casos en OnNewDocument los que se llama dos veces. Esto ocurre cuando el documento está incrustado como un servidor de documentos ActiveX. El método llama primero a la CreateInstance función (expuesta por la COleObjectFactoryclase derivada) y una segunda vez por el InitNew método (expuesto por la COleServerDocclase derivada).

Ejemplo

En los ejemplos siguientes se muestran métodos alternativos para inicializar un objeto de documento.

// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor.  The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}

 

// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   // Do initialization of new document here.

   return TRUE;
}

 

// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}

CDocument::OnOpenDocument

Lo llama el marco como parte del comando Archivo abierto.

virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

Parámetros

lpszPathName
Apunta a la ruta de acceso del documento que se va a abrir.

Valor devuelto

Distinto de cero si el documento se cargó correctamente; de lo contrario, 0.

Comentarios

La implementación predeterminada de esta función abre el archivo especificado, llama a la DeleteContents función miembro para asegurarse de que el documento está vacío, llama CObject::Serialize a para leer el contenido del archivo y, a continuación, marca el documento como limpio. Invalida esta función si desea usar algo distinto del mecanismo de archivo o el mecanismo de archivo. Por ejemplo, puede escribir una aplicación donde los documentos representan registros en una base de datos en lugar de archivos independientes.

Si el usuario elige el comando File Open en una aplicación SDI, el marco utiliza esta función para reiniciar el objeto existente CDocument, en lugar de crear uno nuevo. Si el usuario elige Abrir archivo en una aplicación MDI, el marco construye un nuevo CDocument objeto cada vez y, a continuación, llama a esta función para inicializarla. Debes colocar el código de inicialización en esta función en lugar de en el constructor para que el comando Archivo abierto sea eficaz en las aplicaciones SDI.

Ejemplo

En los ejemplos siguientes se muestran métodos alternativos para inicializar un objeto de documento.

// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor.  The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}

 

// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   // Do initialization of new document here.

   return TRUE;
}

 

// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}

 

// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
   if (!CDocument::OnOpenDocument(lpszPathName))
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   return TRUE;
}

CDocument::OnPreviewHandlerQueryFocus

Dirige el controlador de vista previa para que devuelva desde la llamada HWND a la función GetFocus.

virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);

Parámetros

phwnd
[out] Cuando este método devuelve, contiene un puntero al HWND devuelto de llamar a la GetFocus función desde el subproceso de primer plano del controlador de vista previa.

Valor devuelto

Devuelve S_OK si la operación se realiza correctamente; de lo contrario, devuelve un valor de error.

Comentarios

CDocument::OnPreviewHandlerTranslateAccelerator

Dirige el controlador de vista previa para controlar una pulsación de tecla pasada desde la bomba de mensajes del proceso en el que se ejecuta el controlador de vista previa.

virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);

Parámetros

pmsg
[in] Un puntero a una ventana.

Valor devuelto

Si el controlador de vista previa puede procesar el mensaje de pulsación de tecla, el controlador lo procesa y devuelve S_OK. Si el controlador de vista previa no puede procesar el mensaje de pulsación de tecla, lo ofrece al host a través de IPreviewHandlerFrame::TranslateAccelerator. Si el host procesa el mensaje, este método devuelve S_OK. Si el host no procesa el mensaje, este método devuelve S_FALSE.

Comentarios

CDocument::OnRichPreviewBackColorChanged

Se llama cuando ha cambiado el color de fondo de la vista previa enriquecida.

virtual void OnRichPreviewBackColorChanged();

Comentarios

CDocument::OnRichPreviewFontChanged

Se llama cuando ha cambiado la fuente Rich Preview.

virtual void OnRichPreviewFontChanged();

Comentarios

CDocument::OnRichPreviewSiteChanged

Se llama cuando el sitio de vista previa enriquecida ha cambiado.

virtual void OnRichPreviewSiteChanged();

Comentarios

CDocument::OnRichPreviewTextColorChanged

Se llama cuando ha cambiado el color del texto Rich Preview.

virtual void OnRichPreviewTextColorChanged();

Comentarios

CDocument::OnSaveDocument

Lo llama el marco como parte del comando Guardar archivo o Guardar como archivo.

virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);

Parámetros

lpszPathName
Apunta a la ruta de acceso completa a la que se debe guardar el archivo.

Valor devuelto

Distinto de cero si el documento se guardó correctamente; de lo contrario, 0.

Comentarios

La implementación predeterminada de esta función abre el archivo especificado, llama a CObject::Serialize para escribir los datos del documento en el archivo y, a continuación, marca el documento como limpio. Anule esta función si desea realizar un procesamiento especial cuando el marco guarda un documento. Por ejemplo, puede escribir una aplicación donde los documentos representan registros en una base de datos en lugar de archivos independientes.

CDocument::OnUnloadHandler

Lo llama el marco cuando se descarga el controlador de vista previa.

virtual void OnUnloadHandler();

Comentarios

CDocument::OnUpdateFileSendMail

Habilita el comando si la compatibilidad ID_FILE_SEND_MAIL con correo (MAPI) está presente.

void OnUpdateFileSendMail(CCmdUI* pCmdUI);

Parámetros

pCmdUI
Puntero al objeto CCmdUI asociado al comando ID_FILE_SEND_MAIL.

Comentarios

De lo contrario, la función quita el ID_FILE_SEND_MAIL comando del menú, incluidos separadores por encima o por debajo del elemento de menú según corresponda. MAPI está habilitado si MAPI32.DLL está presente en la ruta de acceso y, en la sección [Correo] del WIN.INI archivo, MAPI=1. La mayoría de las aplicaciones colocan este comando en el menú Archivo.

CDocument admite el envío del documento por medio del correo electrónico, si presenta la compatibilidad con correo electrónico (MAPI). Consulta los artículos Temas MAPI y MAPI en MFC.

CDocument::PreCloseFrame

El marco llama a esta función miembro antes de que se destruya la ventana de marco.

virtual void PreCloseFrame(CFrameWnd* pFrame);

Parámetros

pFrame
Puntero al CFrameWnd que contiene el objeto asociado CDocument.

Comentarios

Se puede invalidar para proporcionar una limpieza personalizada, pero asegúrese de llamar también a la clase base.

El valor predeterminado de PreCloseFrame no hace nada en CDocument. Las CDocumentclases derivadas COleDocument de y CRichEditDoc usan esta función miembro.

CDocument::ReadNextChunkValue

Lee el siguiente valor de fragmento.

virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);

Parámetros

ppValue
[out] Cuando la función devuelve, ppValue contiene el valor que se leyó.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

CDocument::ReleaseFile

El marco llama a esta función miembro para liberar un archivo, lo que hace que esté disponible para su uso por otras aplicaciones.

virtual void ReleaseFile(
    CFile* pFile,
    BOOL bAbort);

Parámetros

pFile
Un puntero al objeto CFile que se va a versionar.

bAbort
Especifica si el archivo se va a liberar mediante CFile::Close o CFile::Abort. FALSE si el archivo se va a liberar mediante CFile::Close; TRUE si el archivo se va a liberar mediante CFile::Abort.

Comentarios

Si bAbort es TRUE, ReleaseFile llama a CFile::Aborty se libera el archivo. CFile::Abort no producirá una excepción.

Si bAbort es FALSE, ReleaseFile llama a CFile::Close y se libera el archivo.

Invalida esta función miembro para requerir una acción por parte del usuario antes de que se libere el archivo.

CDocument::RemoveChunk

Quita un fragmento con especificado GUID.

virtual void RemoveChunk(
    REFCLSID guid,
    DWORD pid);

Parámetros

Guid
Especifica el GUID de un fragmento que se va a quitar.

Pid
Especifica el PID de un fragmento que se va a quitar.

Comentarios

CDocument::RemoveView

Llama a esta función para desasociar una vista de un documento.

void RemoveView(CView* pView);

Parámetros

pView
Apunta a la vista que se va a agregar.

Comentarios

Esta función quita la vista especificada de la lista de vistas asociadas al documento; también establece el puntero del documento de la vista en NULL. El marco llama a esta función cuando se cierra una ventana de marco o se cierra un panel de una ventana divisora.

Llama a esta función solo si va a desasociar manualmente una vista. Normalmente, permitirás que el marco desconecte documentos y vistas definiendo un CDocTemplate objeto para asociar una clase de documento, una clase de vista y una clase de ventana de marco.

Consulta el ejemplo en AddView para obtener una implementación de ejemplo.

CDocument::ReportSaveLoadException

Se llama si se produce una excepción (normalmente o CFileExceptionCArchiveException) al guardar o cargar el documento.

virtual void ReportSaveLoadException(
    LPCTSTR lpszPathName,
    CException* e,
    BOOL bSaving,
    UINT nIDPDefault);

Parámetros

lpszPathName
Apunta al nombre del documento que se estaba guardando o cargando.

e
Obtiene la excepción que se produjo. Puede ser NULL.

bSaving
Marca que indica qué operación estaba en curso; distinto de cero si el documento se estaba guardando, 0 si el documento se estaba cargando.

nIDPDefault
Identificador del mensaje de error que se mostrará si la función no especifica una más específica.

Comentarios

La implementación predeterminada examina el objeto de excepción y busca un mensaje de error que describe específicamente la causa. Si no se encuentra un mensaje específico o si e es NULL, se usa el mensaje general especificado por el parámetro nIDPDefault. A continuación, la función muestra un cuadro de mensaje que contiene el mensaje de error. Invalida esta función si deseas proporcionar mensajes de error adicionales personalizados. Se trata de una invalidación avanzada.

CDocument::SaveModified

Lo llama el marco antes de cerrar un documento modificado.

virtual BOOL SaveModified();

Valor devuelto

Distinto de cero si es seguro continuar y cerrar el documento; 0 si el documento no debe cerrarse.

Comentarios

La implementación predeterminada de esta función muestra un cuadro de mensaje que pregunta al usuario si desea guardar los cambios en el documento, si se ha realizado alguno. Invalida esta función si el programa requiere un procedimiento de solicitud diferente. Se trata de una invalidación avanzada.

CDocument::SetChunkValue

Establece un valor de fragmento.

virtual BOOL SetChunkValue (IFilterChunkValue* pValue);

Parámetros

pValue
Especifica el valor del fragmento que se va a establecer.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

CDocument::SetModifiedFlag

Llama a esta función después de haber realizado cualquier modificación en el documento.

virtual void SetModifiedFlag(BOOL bModified = TRUE);

Parámetros

bModified
Marca que indica si se ha modificado el documento.

Comentarios

Al llamar a esta función de forma coherente, asegúrese de que el marco solicita al usuario que guarde los cambios antes de cerrar un documento. Normalmente, debe usar el valor predeterminado de TRUE para el parámetro bModified. Para marcar un documento como limpio (sin modificar), llame a esta función con un valor de FALSE.

CDocument::SetPathName

Llame a esta función para especificar la ruta de acceso completa del archivo de disco del documento.

virtual void SetPathName(
    LPCTSTR lpszPathName,
    BOOL bAddToMRU = TRUE);

Parámetros

lpszPathName
Apunta a la cadena que se va a usar como ruta de acceso del documento.

bAddToMRU
Determina si el nombre de archivo se agrega a la lista de archivos (MRU) usada más recientemente. Si TRUE, se agrega el nombre de archivo; si FALSE, no se agrega.

Comentarios

Según el valor de la ruta de acceso bAddToMRU se agregue o no a la lista de MRU mantenida por la aplicación. Ten en cuenta que algunos documentos no están asociados a un archivo de disco. Llama a esta función solo si va a invalidar la implementación predeterminada para abrir y guardar archivos usados por el marco de trabajo.

CDocument::SetTitle

Llama a esta función para especificar el título del documento (la cadena mostrada en la barra de título de una ventana de marco).

virtual void SetTitle(LPCTSTR lpszTitle);

Parámetros

lpszTitle
Apunta a la cadena que se va a usar como título del documento.

Comentarios

Al llamar a esta función, se actualizan los títulos de todas las ventanas de marco que muestran el documento.

CDocument::UpdateAllViews

Llame a esta función después de modificar el documento.

void UpdateAllViews(
    CView* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL);

Parámetros

pSender
Apunta a la vista que modificó el documento o NULL si se van a actualizar todas las vistas.

lHint
Contiene información sobre la modificación.

pHint
Apunta a un objeto que almacena información sobre las modificaciones.

Comentarios

Debe llamar a esta función después de llamar a la SetModifiedFlag función miembro. Esta función informa a cada vista adjunta al documento, excepto la vista especificada por pSender, de que el documento se ha modificado. Normalmente, se llama a esta función desde la clase de vista después de que el usuario haya cambiado el documento a través de una vista.

Esta función llama a la función CView::OnUpdate miembro para cada una de las vistas del documento, excepto la vista de envío, pasando pHint y lHint. Use estos parámetros para pasar información a las vistas sobre las modificaciones realizadas en el documento. Puedes codificar información mediante lHint y/o puedes definir una clase derivada de CObject para almacenar información sobre las modificaciones y pasar un objeto de esa clase mediantepHint. Invalida la CView::OnUpdate función miembro en la CViewclase derivada de para optimizar la actualización de la presentación de la vista en función de la información pasada.

Ejemplo

void CExampleDoc::OnUpdateAllViews()
{
   UpdateAllViews(NULL);
}

Vea también

Ejemplo de MFCMDIDOCVW
Ejemplo de MFCSNAPVW
Ejemplo de MFCNPP
CCmdTarget (clase)
Gráfico de jerarquías
CCmdTarget (clase)
CView (clase)
CDocTemplate (clase)