Share via


CDocument::OnOpenDocument

Llamado por el marco como parte del comando para Abrir archivos.

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

Parámetros

  • lpszPathName
    Señala la ruta de acceso del documento que se abrirá.

Valor devuelto

Distinto de cero si el documento se cargó correctamente; si no 0.

Comentarios

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

Si el usuario elige el comando para Abrir archivos en una aplicación SDI, el marco de trabajo usa esta función para restablecer el objeto existente de CDocument , en lugar de crear un nuevo.Si el usuario elige Abrir archivos en una aplicación MDI, el marco construye un nuevo objeto de CDocument cada vez y después llama a esta función para inicializarla.Debe colocar el código de inicialización de esta función en lugar del constructor para que el comando para Abrir archivos funcione en aplicaciones SDI.

Ejemplo

Los ejemplos siguientes se muestran los métodos alternativos para inicializar un objeto document.

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

Requisitos

encabezado: afxwin.h

Vea también

Referencia

Clase de CDocument

Gráfico de jerarquía

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize