==[[MFC ドキュメント]]=={{category [[Category:MFC}}]]
{{amazon|4891000503}}
[[MFC ドキュメントとビューの分離]]
===SDIアプリケーション===
====MFCアプリケーションの開始[[MFC]]アプリケーションの開始====以下の順序でMFCアプリケーションは開始される以下の順序で[[MFC]]アプリケーションは開始される
#グローバルオブジェクト '''theApp'''(CWinAppの派生クラス AppWizardが作成)を生成
#MFCライブラリの一部であるグローバル関数 [[MFC]]ライブラリの一部であるグローバル関数 '''WinMain'''(エントリポイント)を呼び出す
#WinMainは、CWinAppから派生されているクラスの唯一のインスタンスを探す
#WinMainは、theAppの'''InitInstance'''メンバ関数を呼び出す
#派生クラスでオーバーライドされたInitInstance関数は、ドキュメントのロードと、メイン フレーム ウィンドウ および ビュー ウィンドウの表示処理を開始
#WinMainはtheAppの'''Run[[R]]un'''メンバ関数を呼び出す#Runメンバ関数は、ウィンドウメッセージとコマンドメッセージのディスパッチ処理を開始[[R]]unメンバ関数は、ウィンドウメッセージとコマンドメッセージのディスパッチ処理を開始
====ドキュメントテンプレート====
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAMEID[[R]]_MAINF[[R]]AME, RUNTIME_CLASS[[R]]UNTIME_CLASS(CSdiSampleDoc), RUNTIME_CLASS[[R]]UNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ RUNTIME_CLASS[[R]]UNTIME_CLASS(CSdiSampleView));
if (!pDocTemplate)
return FALSE;
|-
|2.CMainFrameメインフレームオブジェクトを生成
|メインフレームウィンドウも生成するが、表示は行わない。メインフレームウィンドウはIDR_MAINFRAMEメニュー、ツールバー、ステータスバーを含むメインフレームウィンドウも生成するが、表示は行わない。メインフレームウィンドウはID[[R]]_MAINF[[R]]AMEメニュー、ツールバー、ステータスバーを含む
|-
|3.ビューオブジェクトを生成
|}
*CDocumentのm_bModified データメンバはドキュメントが変更されている場合TRUEとなるデータメンバはドキュメントが変更されている場合T[[R]]UEとなる*ドキュメントが変更された場合SetModifiedFlag関数を使ってフラグをTRUEに設定するドキュメントが変更された場合SetModifiedFlag関数を使ってフラグをT[[R]]UEに設定する
===MDIアプリケーション===
====MFCアプリケーションの開始[[MFC]]アプリケーションの開始====
*実行開始のシーケンスは、SDIアプリケーションとほとんど同じ。
*MDIのInitInstance関数は、AddDocTemplate関数の呼び出し以降がSDIと若干ことなる。
// はドキュメント、フレーム ウィンドウとビューを結合するために機能します。
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MdiSampleTYPEID[[R]]_MdiSampleTYPE, RUNTIME_CLASS[[R]]UNTIME_CLASS(CMdiSampleDoc), RUNTIME_CLASS[[R]]UNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム RUNTIME_CLASS[[R]]UNTIME_CLASS(CMdiSampleView));
if (!pDocTemplate)
return FALSE;
====既存のドキュメントに追加のビューを作成する====
メニューから、新規ウィンドウを選択すると、現在選択中のドキュメントにリンクされた新しい子ウィンドウを開く。メニューから、新規ウィンドウを選択すると、現在選択中のドキュメントに[[リンク]]された新しい子ウィンドウを開く。
{|class="wikitable"