CDocument::OnOpenDocument

wirtualne BOOL OnOpenDocument ( LPCTSTR lpszPathName );

Wartość zwracany

Niezerowa, jeśli dokument został pomyślnie załadowany; inny sposób 0.

Parametry

lpszPathName

Punkty na ścieżce dokumentu, który ma być otwarty.

Uwagi

Wywoływany przez ram jako część polecenia Otwórz plik. Domyślna implementacja tej funkcji otwiera określony plik, wywołuje funkcję Państwa DeleteContents do zapewnienia, że dokument jest pusta, wywołuje CObject::Serialize odczytać zawartość pliku i następnie znaków dokumentu jako czyste. Zastąpić tę funkcję, jeśli chcesz użyć coś innego niż mechanizm archiwum lub mechanizmu pliku. Na przykład może napisać aplikację, gdzie dokumenty stanowią rekordów w bazie danych, zamiast osobnych plików.

Jeżeli użytkownik wybierze polecenie Otwórz plik w aplikacji SDI, ramy używa tej funkcji zainicjować istniejącego obiektu CDocument , zamiast tworzenia nowej. Jeśli użytkownik zdecyduje się na otwieranie pliku w aplikacji MDI, ramy tworzy nowy obiekt CDocument za każdym razem, a następnie wywołuje tę funkcję do go zainicjować. Kod inicjowania musi umieścić w tej funkcji zamiast konstruktora dla polecenia Otwórz plik się być skuteczne w aplikacjach SDI.

Przykład

/ / Poniższe przykłady ilustrują alternatywnych metod
/ / Inicjowanie obiektu dokumentu.

/ / Metoda 1: W aplikacji MDI, najprostszą miejsce do / / inicjowania jest w constructor.nbsp dokumencie; Ram / / zawsze tworzy nowy obiekt dokumentu dla nowych plików lub plików otwartych.

CMyDoc::CMyDoc()
{
   / / Do inicjowania dokumentu MDI tutaj.
   // ...
}

/ / Metoda 2: W aplikacji SDI lub MDI, czy wszystkie inicjowania / / in nadpisanie On&NewDocument, jeśli pewne, czy
/ / Inicjowanie skutecznie jest zapisywana na zapisywanie pliku
/ / i pełni przywrócone po otwarciu pliku za pomocą serializacji.

BOOL CMyDoc::OnNewDocument()
{
   if (!.CDocument::OnNewDocument())
      return FALSE;

/ / Do inicjowania nowy dokument w tym miejscu.

Zwraca wartość PRAWDA;
}

/ / Metoda 3: Jeśli inicjalizacja dokumentu nie jest
/ / skutecznie zapisywane i przywrócony przez serializacji (podczas zapisywania plików
/ / i otwieranie pliku), następnie implementuj inicjowania w pojedynczym
/ / function (o nazwie InitMyDocument w tym przykładzie).  Zadzwonić
/ / dzielone inicjowanie funkcji przesłonięcia zarówno
/ / OnNewDocument i OnOpenDocument.
 
BOOL CMyDoc::OnNewDocument()
{
   if (!.CDocument::OnNewDocument())
      return FALSE;

InitMyDocument(); / / wywołania funkcji udostępnionych inicjowania

/ / Jeżeli nowy obiekt dokument wymaga dodatkowych inicjowania
   / / nie jest konieczne, gdy dokument jest rozszeregować za pośrednictwem otwieranie pliku,
   / / wykonać tego dodatkowego inicjowania tutaj.

Zwraca wartość PRAWDA;
}

Omówienie CDocument |nbsp; Klasa członków | Wykres hierarchii

Zobacz teżnbsp;CDocument::DeleteContents, CDocument::OnCloseDocument, CDocument::On&NewDocument, CDocument::OnSaveDocument, CDocument::ReportSaveLoadException, CObject::Serialize

Index