Condividi tramite


CDocument::OnOpenDocument

Chiamato dal framework come parte del comando aperto il file.

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

Parametri

  • lpszPathName
    Punti al percorso del documento da aprire.

Valore restituito

Diverso da zero se il documento è stato caricato correttamente; in caso contrario 0.

Note

L'implementazione predefinita di questa funzione viene aperto il file specificato, chiama la funzione membro DeleteContents per assicurarsi che il documento è vuoto, chiama CObject::Serialize per leggere il contenuto del file e quindi quindi viene contrassegnato come pulito.Eseguire l'override della funzione se si desidera utilizzare un nome diverso dal meccanismo di archiviazione o del meccanismo di file.Ad esempio, è possibile scrivere un'applicazione in cui i documenti rappresentano i record in un database anziché i file separati.

Se l'utente sceglie il comando aprire un file in un'applicazione SDI, il framework utilizza questa funzione per reinitialize l'oggetto esistente CDocument, anziché creare un nuovo oggetto.Se l'utente sceglie il file aperto in un'applicazione MDI, il framework crea ogni volta che un nuovo oggetto CDocument quindi chiama la funzione per inizializzare.È necessario inserire il codice di inizializzazione in questa funzione anziché nel costruttore per il comando aperto il file sia valido nelle applicazioni SDI.

Esempio

Negli esempi seguenti vengono illustrati i metodi alternativi per inizializzare un oggetto del 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;
}

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe di CDocument

Grafico della gerarchia

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize