CDocument::OnOpenDocument
Wywołana przez RAM jako część polecenia Otwórz plik.
virtual BOOL OnOpenDocument(
LPCTSTR lpszPathName
);
Parametry
- lpszPathName
Wskazuje ścieżkę do otwarcia dokumentu.
Wartość zwracana
Niezerowa, jeśli dokument został pomyślnie załadowany; 0 inaczej.
Uwagi
Domyślna implementacja tej funkcji otwiera określony plik połączenia DeleteContents wywołuje funkcję Członkowskie do zapewnienia, że dokument jest pusty, CObject::Serialize do odczytu pliku jego zawartość, a następnie oznacza dokument jako czyste.Tej funkcji należy zastąpić, jeśli chcesz użyć czegoś niż mechanizmu archiwum lub mechanizm pliku.Na przykład może napisać aplikację, gdzie dokumenty stanowią rekordów w bazie danych zamiast oddzielnych plików.
Jeśli użytkownik wybierze polecenie Otwórz plik w aplikacji SDI, ramy tej funkcji używa zainicjować istniejących CDocument obiekt zamiast tworzenia nowej.Jeśli użytkownik wybierze Otwórz plik w aplikacji MDI, ramy konstrukcji nowy CDocument czasu każdego obiektu i następnie wywołuje tę funkcję, aby go zainicjować.Kod inicjowania musi umieścić w tej funkcji, zamiast w konstruktorze polecenia Otwórz plik skuteczne w aplikacji SDI.
Przykład
Poniższe przykłady ilustrują alternatywne metody inicjowania obiektu dokumentu.
// 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;
}
Wymagania
Nagłówek: afxwin.h