歩き遍路 平成19年春(J1) 記録の準備

Vc++のMFCで分割窓のプログラム(6)
           DocとView


 Vc++のMFCでシングルドキュメント形式(SDI)の分割ウインドウを作りました。しかし、ドキュメントとビューの関係が理解できていません。いろいろな市販のMFCの解説書を見ても、ドキュメントとビューはAPPWizardが自動的に作るので同じ様な説明しかありません。又、リストと画面の画像に加え言葉での説明が主です。

 今回、手ごろなサンプルプログラムを理解するのに、リストの切り貼りにブロック図を加えた図式にしましたので記録します。
 サンプルプログラムは、小林著「プログラミング実習 VC++ 入門編」4・5章 MyNavi を使わせていただきました。

●プログラムの動作概要

 プログラムを起動すると次の画面が表示されます。
 ・上部のPaneは、地図を表示します。○で示す人と駅と学校と会社の位置関係を図形で表示します。
 ・下部左のPaneは、○の人と駅の位置関係を文字で表示します。

 ○で示す人位置は、キーボードの矢印キーで移動できます。





●ドキュメントとビューの動作概要

 小林著「プログラミング実習 VC++ 入門編」4・5章 MyNaviの動作概要を、リストの切り貼りにブロック図を加えた図式にしました。大きな流れを図示しましたので、詳細な説明は本を参照下さい。

 動作を番号順に示します。
  @位置のメンバ変数を作成 : ドキュメントとしての位置を格納する変数を作成。
  A位置のメンバ変数を初期化 : 位置格納変数を初期化する。
  B スプリットウインドウのオブジェクトを作成 
  Cウインドウを分割 。
  DCMyNaviView 描画 : ドキュメントは、CMyNaviDoc* pDoc = GetDocument(); で取得。
  ECMyEditView ビューの作成と描画 : ドキュメントは、CMyNaviDoc* pDoc = GetDocument(); で取得。
  FCMyNaviView メッセージハンドラ : キー入力によるドキュメントの変更。
    ドキュメントは、CMyNaviDoc* pDoc = GetDocument(); で取得。
  G再描画を全ビューに指令 : UpdateAllViews(NULL)で全ビューに再描画を指令。











































































































ホームへ戻る