共用方式為


CDocument::OnOpenDocument

呼叫框架做為檔案開啟命令的一部分。

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

參數

  • lpszPathName
    要開啟之文件的路徑的點。

傳回值

不是零,如果文件載入成功,則為 0。

備註

這個函式的預設實作會開啟指定的文件, DeleteContents 呼叫成員函式確定文件是空的,則呼叫 CObject::Serialize 讀取檔案的內容,然後將該文件標記為清除。 覆寫這個函式中刪除檔案機制或檔案機制以外,是否要使用的項目。 例如,您可以撰寫資料表示資料庫中的資料錄 (而不是個別的文件的應用程式。

如果使用者在 SDI 應用程式的 [開啟舊檔] 命令,架構會使用此函式重新初始化現有的 CDocument 物件,而不是建立新的。 如果使用者選取要開啟的檔案在 MDI 應用程式中,這個架構每次建構新的物件 CDocument 然後呼叫此函式將它初始化。 您可以在這個函式必須將您的初始化程式碼而不是檔案開啟命令的建構函式 (Constructor) 可以僅在 SDI 應用程式。

範例

下列範例說明如何使用資料物件的方法。

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

需求

Header: afxwin.h

請參閱

參考

CDocument 類別

階層架構圖

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize