次の方法で共有


CDocument::OnNewDocument

更新 : 2007 年 11 月

[ファイル] メニューの [新規作成] コマンドの一部として、フレームワークが呼び出します。

virtual BOOL OnNewDocument( );

戻り値

ドキュメントの初期化に成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数の既定の実装では、ドキュメントを空にするために、DeleteContents メンバ関数を呼び出し、その後変更なしとして新しいドキュメントにマークします。新しいドキュメントのデータ構造を初期化するには、この関数をオーバーライドします。オーバーライドしたこの関数の中で、基本クラスの同じ関数を呼び出す必要があります。

SDI アプリケーションでは、[ファイル] メニューの [新規作成] をクリックすると、フレームワークは、新しいドキュメントを作成せずに、既存のドキュメントを再初期化するためにこの関数を使います。マルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) アプリケーションでは、[ファイル] メニューの [新規作成] をクリックすると、フレームワークは、新しいドキュメントを作成し、その後それを初期化するために、この関数を呼び出します。SDI アプリケーションでは、[ファイル] メニューの [新規作成] コマンドに対応する初期化コードは、コンストラクタではなく、この関数の中に置く必要があります。

OnNewDocument は、2 回呼び出される場合があります。2 回呼び出されるのは、ドキュメントが ActiveX ドキュメント サーバーとして埋め込まれている場合です。1 回目は CreateInstance メソッド (COleObjectFactory派生クラスによって公開) によって呼び出され、2 回目は 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;
}

必要条件

ヘッダー : afxwin.h

参照

参照

CDocument クラス

階層図

CDocument::CDocument

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnOpenDocument

CDocument::OnSaveDocument

その他の技術情報

CDocument のメンバ