CDocument::OnOpenDocument

virtuelle BOOL OnOpenDocument ( LPCTSTR LpszPathName );

Rückgabewert

Ungleich NULL, wenn das Dokument erfolgreich geladen wurde; andernfalls 0.

Parameter

lpszPathName

Punkte auf dem Pfad des Dokuments geöffnet werden.

Bemerkungen

Als Teil des Befehls Datei öffnen aufgerufen. Die Standardimplementierung dieser Funktion öffnet die angegebene Datei, ruft die Memberfunktion DeleteContents um sicherzustellen, dass das Dokument leer ist, CObject::Serialize Ruft , der Inhalt der Datei zu lesen und dann das Dokument als sauber markiert. Überschreiben Sie diese Funktion, wenn Sie etwas anders als die Archiv-Mechanismus oder den Datei-Mechanismus verwenden möchten. Beispielsweise können Sie eine Anwendung schreiben wo Dokumente Datensätze in einer Datenbank anstelle von separaten Dateien darstellen.

Wenn der Benutzer den Befehl Datei öffnen in einer SDI-Anwendung auswählt, verwendet das Framework diese Funktion erneut initialisieren die vorhandene CDocument -Objekt, anstatt eine neue zu erstellen. Wenn der Benutzer in einer MDI-Anwendung Datei öffnen auswählt, das Framework erstellt ein neues CDocument -Objekt jedes Mal und dann ruft diese Funktion initialisiert. Sie müssen Ihren Initialisierungscode in dieser Funktion anstatt im Konstruktor für den Befehl Datei öffnen in SDI-Anwendungen wirkungsvoll platzieren.

Beispiel

/ / Den folgenden Beispielen werden alternative Methoden der
/ / initialisieren ein Document-Objekt.

/ / Methode 1: In einer MDI-Anwendung der einfachste Ort zu tun / / Initialisierung ist in dem Dokument constructor.nbsp; Rahmen / / erstellt ein neues Dokumentobjekt immer für neue Datei oder Datei öffnen.

CMyDoc::CMyDoc()
{
   / / Initialisierung des MDI Dokument hier tun.
   // ...
}

/ / Methode 2: In einer SDI- oder MDI-Anwendung tun alle Initialisierung / / in einer Überschreibung der On&NewDocument, bist du sicher, dass
/ / die Initialisierung ist tatsächlich eingesparten Datei speichern
/ / und vollständig restaurierte auf Datei öffnen, über Serialisierung.

BOOL CMyDoc::OnNewDocument()
{
   If (!.CDocument::OnNewDocument())
      Return FALSE;

/ / Initialisierung des neuen Dokuments hier tun.

TRUE zurück;
}

/ / Methode 3: Wenn die Initialisierung des Dokuments nicht ist
/ / effektiv gespeichert und wiederhergestellt, indem Serialisierung (in Datei speichern
/ / und Datei öffnen), dann implementieren Sie die Initialisierung in einzelne
/ / Funktion (benannt InitMyDocument in diesem Beispiel).  Rufen Sie die
/ / gemeinsame Initialisierungsfunktion von Außerkraftsetzungen von beiden
/ / OnNewDocument und OnOpenDocument.
 
BOOL CMyDoc::OnNewDocument()
{
   If (!.CDocument::OnNewDocument())
      Return FALSE;

InitMyDocument(); / / Ihre gemeinsame Initialisierungsfunktion aufrufen

/ / Wenn das neue Dokumentobjekt zusätzliche Initialisierung erfordert
   / / nicht notwendig, wenn das Dokument über Datei öffnen, deserialisiert wird
   / / dann, dass die zusätzliche Initialisierung hier durchführen.

TRUE zurück;
}

Übersicht über die CDocument |nbsp; Member der Klasse | Hierarchiediagramm

Siehe auch&Nbsp;CDocument::DeleteContents, CDocument::OnCloseDocument, CDocument::OnNewDocument, CDocument::OnSaveDocument, CDocument::ReportSaveLoadException, CObject::Serialize

Index