!!!MFC 単純なドキュメント-ビューアプリケーションの作成 {{category MFC}} {{amazon 4891000503}} *MFC ドキュメント *MFC ドキュメントとビューの分離 !!概要 *複数のビューは不要だが、アプリケーションフレームワークのファイルサポートは利用したいような場合 *このような場合[[UpdateAllViewsとOnUpdate関数については考慮する必要はない|MFC ドキュメントとビューの分離]] *以下の手順で開発を行う。 !派生ドキュメントクラスのヘッダーファイル内に宣言を行う *これらのデータメンバはアプリケーション内での一時的なデータ記憶場所となる *データメンバをパブリックにするか、派生ビュークラスをドキュメントクラスのフレンドとして宣言することができる !派生ビュークラスの中でOnInitialUpdate仮想関数をオーバーライドする *ドキュメントデータが初期化されるかディスクから読み出された後でこの関数を呼び出す *OnInitialUpdateはビューを更新して、現在のドキュメントデータが反映されるようにする !派生ビュークラスからドキュメントにアクセス *派生ビュークラスの中でウィンドウメッセージハンドラ、コマンドメッセージハンドラ、OnDraw関数それぞれが、GetDocumentを使ってドキュメントオブジェクトにアクセスすることで、ドキュメントデータメンバを直接読み書きできるようにすうr。 !!イベントシーケンス !アプリケーションの開始 +CMyDocumentオブジェクトの生成 +CMyViewオブジェクトの生成 +ビューウィンドウの生成 +CMyView::OnCreateの呼び出し +CMyDocument::OnNewDocumentの呼び出し +CMyView::OnInitialUpdateの呼び出し **ビューオブジェクトの初期化 **ビューウィンドウの無効化 **CMyView::OnDrawの呼び出し !ユーザーによるデータの編集 +CMyView関数がCMyDocumentデータメンバを更新 !ユーザがアプリケーションを終了 +CMyViewオブジェクトの破棄 +CMyDocumentオブジェクトの破棄 !!CFormViewクラス *モードレスダイアログウィンドウの多くの機能を備えている *CDialogから派生するクラスと同様、フレームの特性や複数のコントロールを定義するダイアログリソースに関連付けられる *自分自身に含まれるコントロールから通知メッセージを直接受け取る *コマンドメッセージはアプリケーションフレームワークから受け取る *CDailogとは異なり、フレームのメインメニューやツールバーから簡単にビューを制御できる