| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

MFC 単純なドキュメント-ビューアプリケーションの作成

提供: MyMemoWiki
2020年2月15日 (土) 07:34時点におけるPiroto (トーク | 投稿記録)による版 (ページの作成:「==MFC 単純なドキュメント-ビューアプリケーションの作成== {{category MFC}} {{amazon|4891000503}} *MFC ドキュメント *MFC ドキュメン…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

MFC 単純なドキュメント-ビューアプリケーションの作成

テンプレート:Category MFC

  • MFC ドキュメント
  • MFC ドキュメントとビューの分離

概要

  • 複数のビューは不要だが、アプリケーションフレームワークのファイルサポートは利用したいような場合
  • このような場合[MFC ドキュメントとビューの分離] [UpdateAllViewsとOnUpdate関数については考慮する必要はない]
  • 以下の手順で開発を行う。

派生ドキュメントクラスのヘッダーファイル内に宣言を行う

  • これらのデータメンバはアプリケーション内での一時的なデータ記憶場所となる
  • データメンバをパブリックにするか、派生ビュークラスをドキュメントクラスのフレンドとして宣言することができる

派生ビュークラスの中でOnInitialUpdate仮想関数をオーバーライドする

  • ドキュメントデータが初期化されるかディスクから読み出された後でこの関数を呼び出す
  • OnInitialUpdateはビューを更新して、現在のドキュメントデータが反映されるようにする

派生ビュークラスからドキュメントにアクセス

  • 派生ビュークラスの中でウィンドウメッセージハンドラ、コマンドメッセージハンドラ、OnDraw関数それぞれが、GetDocumentを使ってドキュメントオブジェクトにアクセスすることで、ドキュメントデータメンバを直接読み書きできるようにすうr。

イベントシーケンス

アプリケーションの開始

  1. CMyDocumentオブジェクトの生成
  2. CMyViewオブジェクトの生成
  3. ビューウィンドウの生成
  4. CMyView::OnCreateの呼び出し
  5. CMyDocument::OnNewDocumentの呼び出し
  6. CMyView::OnInitialUpdateの呼び出し
    • ビューオブジェクトの初期化
    • ビューウィンドウの無効化
    • CMyView::OnDrawの呼び出し

ユーザーによるデータの編集

  1. CMyView関数がCMyDocumentデータメンバを更新

ユーザがアプリケーションを終了

  1. CMyViewオブジェクトの破棄
  2. CMyDocumentオブジェクトの破棄

CFormViewクラス

  • モードレスダイアログウィンドウの多くの機能を備えている
  • CDialogから派生するクラスと同様、フレームの特性や複数のコントロールを定義するダイアログリソースに関連付けられる
  • 自分自身に含まれるコントロールから通知メッセージを直接受け取る
  • コマンドメッセージはアプリケーションフレームワークから受け取る
  • CDailogとは異なり、フレームのメインメニューやツールバーから簡単にビューを制御できる