次の方法で共有


CDocument::OnOpenDocument

[ファイルを開く]コマンドの一部として、フレームワークによって呼び出されます。

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

パラメーター

  • lpszPathName
    開くドキュメントのパスへのポインター。

戻り値

ドキュメントが正常に読み込まれた場合は; それ以外の場合は 0。

解説

この関数の既定の実装は、指定したファイルを呼び出して、ドキュメントが空であることを確認するに DeleteContents のメンバー関数を呼び出して、ファイルの内容を読み込むために CObject::Serialize を次にクリーンとして参照ドキュメントが開きます。アーカイブの機構またはファイルの機構以外を使用する場合は、この関数をオーバーライドします。たとえば、ドキュメントが個別のファイルではなく、データベースのレコードを表すアプリケーションを作成することもあります。

SDI アプリケーションのユーザーがファイルを開く]コマンドを選択すると、フレームワークは使用して新しいを作成するのではなく CDocument の、既存のオブジェクトを初期化をやり直すには、この関数が。ユーザーが MDI アプリケーションで開いているファイルを選択すると、フレームワークは CDocument のたびに新しいオブジェクトを構築し、次に初期化する場合は、この関数を呼び出します。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;
}

必要条件

ヘッダー: afxwin.h

参照

関連項目

CDocument クラス

階層図

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize