次の方法で共有


テクニカル ノート 25: ドキュメント、ビュー、フレームの作成

[!メモ]

次のテクニカル ノートは、最初にオンライン ドキュメントの一部とされてから更新されていません。結果として、一部のプロシージャおよびトピックが最新でないか、不正になります。最新の情報について、オンライン ドキュメントのキーワードで関係のあるトピックを検索することをお勧めします。

ここでは、 WinApps、 DocTemplates、ドキュメント、ゾーンとビューの作成、および所有権の問題について説明します。

WinApp

システムに CWinApp の 1 種類のオブジェクトがあります。

これは、フレームワークの WinMainの内部実装によって静的に作成され、初期化されます。CWinApp から便利な処理を行うために取得します (例外: 拡張ダイナミック リンク ライブラリは CWinApp のインスタンスがないようです —初期化は DllMain の代わりに実行されます)。

CWinApp の 1 種類のオブジェクトはドキュメント テンプレート ( CPtrList)のリストを作成します。一つ以上のアプリケーションに対してドキュメント テンプレートです。DocTemplates は、通常、リソース ファイル (つまり、文字列配列)から CWinApp::InitInstanceに読み込まれます。

pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);

CWinApp の 1 種類のオブジェクトは、アプリケーションのすべてのフレーム ウィンドウを作成します。アプリケーションのメイン フレーム ウィンドウは CWinApp::m_pMainWndに格納する必要があります。; AppWizard を場合は、ではが許可されない場合、通常 InitInstance の実装の m_pMainWnd を設定します。シングル ドキュメント インターフェイス (SDI) アプリケーションのメイン フレーム ウィンドウ、または唯一のドキュメント フレーム ウィンドウとして動作しない場合は 1 CFrameWnd です。複数のドキュメント インターフェイス (MDI) では、子 CFrameWndのすべての秒を含むアプリケーションのメイン フレーム ウィンドウとして使用され、その MDI ゾーン (クラス CMDIFrameWnd)です。各子ウィンドウはクラス CMDIChildWndCFrameWnd(から派生)と機能多くのドキュメント フレーム ウィンドウの 1 文字として、です。

DocTemplates

CDocTemplate は、ドキュメントの作成者とマネージャーです。これは、作成するドキュメントを作成します。アプリケーションが次のリソースに基づく方法を使用した場合 CDocTemplateから派生する必要はありません。

SDI アプリケーションでは、クラス CSingleDocTemplate は 1 個の開いているドキュメントを監視します。MDI アプリケーションでは、クラス CMultiDocTemplate は、そのテンプレートから作成されたすべての現在開いているドキュメントのリスト ( CPtrList)を保持します。CDocTemplate::AddDocumentCDocTemplate::RemoveDocument は、テンプレートからドキュメントを追加または削除する仮想メンバー関数を提供します。CDocTemplateCDocument のフレンドであるため、文書を作成したドキュメント テンプレートをポイントに保護された CDocument::m_pDocTemplate バック ポインターを設定し直すことができます。

CWinApp は、すべてのドキュメント テンプレートを呼び出す既定の OnFileOpen の実装を処理します。実装は、開いているドキュメントを検索し、既にかの新しいドキュメントを開く、フォーム決定が含まれます。

CDocTemplate ドキュメント、およびゾーンにバインドする UI を管理します。

CDocTemplate はないドキュメントの数の数を保持します。

CDocument

CDocumentCDocTemplateによって所有されます。

ドキュメント ( CPtrList)を表示しているドキュメントに現在開いているビューの一覧があります ( CViewから派生します)。

ドキュメントまたは破棄作成するためのビューが作成された後、相互に接続されます。ドキュメントを閉じる (つまり、コンテナーに存在するファイルによって、閉じる)、接続されているすべてのビューが閉じます。ドキュメントの最後のビューが終了した場合 (つまり、ペイン、閉じる)ドキュメントが閉じます。

CDocument::AddViewRemoveView インターフェイスがビューのリストを保持するために使用されます。CDocumentCView のフレンドであるため、 CView::m_pDocument のバック ポインターを設定できます。

CFrameWnd

CFrameWnd (ゾーンとも呼ばれます)は、 MFC 1.0 のと同じロール、 CFrameWnd のクラスを新しいクラスを派生させず、多くの場合、使用するようにデザインされていますができます。派生クラス CMDIFrameWndCMDIChildWnd は、は多くの標準コマンド既に実行されます向上します。

CFrameWnd はゾーンのクライアント領域のペインを作成する必要があります。通常、ゾーンのクライアント領域全体を占める 1 個のメイン ウィンドウがあります。

MDI ゾーンのウィンドウの場合は、クライアント領域は、すべての MDI 子フレーム ウィンドウの親である MDICLIENT のコントロールで塗りつぶされます。SDI ゾーンのペインまたは MDI 子フレーム ウィンドウの場合は、クライアント領域は、通常 CView派生ペイン オブジェクトが格納されます。CSplitterWndの場合は、ビューのクライアント領域は CSplitterWnd ペイン オブジェクトと CViewで塗りつぶされます派生ペイン オブジェクト (分割ペインごとに 1)は CSplitterWndの子ウィンドウとして作成されます。

参照

その他の技術情報

番号順テクニカル ノート

カテゴリ別テクニカル ノート