若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

CDocument::OnNewDocument

 

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


virtual BOOL OnNewDocument( );

不是零,如果文件成功已初始化,則為 0。

這個函式呼叫 (Function Call) 的預設實作來確定 DeleteContents 成員函式的文件是空的會將新的檔案 (如清除。覆寫這個函式會初始化新文件的資料結構。您應該呼叫這個函式的基底類別版本從您的覆寫。

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

請注意 OnNewDocument 呼叫兩次的情況。在文件中內嵌為 ActiveX 文件伺服器,就會發生這種情況。函式在 CreateInstance 方法 (公開 COleObjectFactory衍生類別) 和第二個之前先呼叫方法 InitNew (公開 COleServerDoc衍生類別)。

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


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

需求

Header: afxwin.h

顯示: