Freigeben über


CDocument::OnOpenDocument

Aufgerufen vom Framework als Teil des offenen Befehls der Datei.

virtual BOOL OnOpenDocument( 
   LPCTSTR lpszPathName  
);

Parameter

  • lpszPathName
    Punkte auf den Pfad des zu öffnenden Dokuments.

Rückgabewert

ungleich 0 (null), wenn das Dokument erfolgreich geladen wurde; andernfalls 0.

Hinweise

Die Standardimplementierung dieser Funktion wird die angegebene Datei aufruft, die DeleteContents-Memberfunktion, um sicherzustellen, dass das Dokument leer ist, aufgerufen CObject::Serialize, um den Inhalt der Datei zu lesen, und dann das Dokument markiert, wie sauber. Überschreiben Sie diese Funktion, wenn Sie etwas Anderes als den Archivmechanismus oder den Dateimechanismus verwenden möchten. Beispielsweise geschrieben werden Sie eine Anwendung, in der Dokumente Datensätze in einer Datenbank nicht als separate Dateien darstellen.

Wenn der Benutzer den Befehl der geöffneten Datei in einer SDI-Anwendung auswählt, verwendet das Framework diese Funktion, um das vorhandene CDocument-Objekt initialisieren, anstatt ein neues. Wenn der Benutzer die Datei auswählt, die in einer MDI-Anwendung geöffnet ist, erstellt das Framework ein neues CDocument-Objekt jedes Mal und ruft diese Funktion auf, um sie zu initialisieren. Sie müssen den Initialisierungscode in dieser Funktion anstelle des Konstruktors in platzieren, sodass der geöffnete Befehl der Datei in SDI-Anwendungen wirksam ist.

Beispiel

Die folgenden Beispiele veranschaulichen alternative Methoden das Initialisieren eines angezeigt.

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CDocument-Klasse

Hierarchiediagramm

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize