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

Vc++のMFCで分割窓のプログラム(4)
            3Paneの確認


 Vc++のMFCを使って、3つのPaneを持つシングルドキュメント形式(SDI)のウインドウを作りました。

●プログラムの実行結果とクラスビューの関係

 左に実行結果を、右にクラスビューを示します。
 又、実行結果の各Paneと描画クラスとの関係を赤い矢印で示します。

 3つのPaneのビュークラスは、次の様に設定しました。
 ・最上部のPaneは、CListView を設定して、季節の表を表示。
 ・まん中のPaneは、Cview を設定して、直線と文字を表示。
 ・最下部のPaneは、CFormView を設定して、ボタンを表示。 ボタンを押すと、メッセージボックスを表示。




●スプリットウインドウを使った、ウインドウ表示の関係

 モニタで見るウインドウの画像は、「スプリットウインドウを使った、ウインドウの表示の関係図」の様に作られています。
 「MFC」を使ってウインドウを作る場合、メインフレームウインドウは、「AppWizard」が自動的に作ってくれますので、
プログラムすることはクライアント領域にスプリットウインドウと各Paneに描画することです。

 次に、3つのPaneを持つスプリットウインドウを使った、ウインドウの表示プログラムの手順を記録します。




●プログラム作成手順

 プログラムの手順を記録します。
 
@スケルトンプロジェクトの作成

 MFC AppWizardを使って、次のプロジェクトを作成
   ・アプリケーションタイプ : SDI 
   ・プロジェクト名 : SplitWnd
   ・UNICODEライブラリの使用する : チェックを外す
   ・分割ウインドウ : チェックをする 

Aクラスの追加

 3つのPaneに描画するクラスを追加
   ・最上部Paneの描画用 : CSwTopView 基本クラスは CListView
   ・まん中のPaneの描画用 : CSplitWndView 基本クラスは Cview プロジェクトのクラスを使用
   ・最下部のPaneの描画用 : CSwBtmView 基本クラスは CFormView

BMainFrm.cpp にヘッダファイルをインクルーズ

 フレームクラスでビューとドキュメントを使えるようにヘッダファイルをインクルーズします。
// ★ の4行を追加




C3つのPaneを持つ静的スプリットウインドウを作る
 (桜田・田口著、Visual C++ プログラミング入門 第4部 1.4章 を参照)

 メインフレームウインドウのクライアント領域の初期化は、CMainFrame::OnCreateClient( ) がしています。
 通常のウインドウの表示では、CMainFrame::OnCreateClient( ) がクライアント領域の管理をビューウインドウに割り当てています。
 
 スプリットウインドウを使うには、CMainFrame::OnCreateClient( ) にスプリットウインドウを使うような設定をして、スプリットウインドウの各Paneに描画するビューウインドウを割り当てます。

 上中下の3ペインを持つ静的分割ウィンドウを設定する手順 (詳細はリスト参照)
   ・プロジェクト作成時、分割ウインドウの「チェックをする」ことで class CMainFrame : public CFrameWnd に
    CSplitterWnd m_wndSplitter; メンバ変数を作成しました。このメンバ変数で3ペインを作ります。
   ・m_wndSplitter.CreateStatic( this, 3, 1 ) で、上中下の3ペインを設定します。
   ・m_wndSplitter.CreateView( ・・・)で、各々のペインに描画するクラスを設定します。




D 最上部ペインの描画

 最上部ペインは、基本クラスは CListViewで、描画クラスはCSwTopView が設定されています。

 最上部ペインの描画は、CSwTopView.cppでします。

   ・CSwTopView::PreCreateWindow( ) で、レポートスタイルの設定をします。
   ・CSwTopView::OnInitialUpdate() で、タイトル表示後、内容を表示します。




D 中央部ペインの描画

 中央部ペインは、基本クラスは プロジェクトのクラスであるCviewで、描画クラスはCSplitWndView が設定されています。

 中央部ペインの描画は、CSplitWndView.cppのCSplitWndView::OnDraw( ) でします。
 直線と文字の描画は、教科書を参考に作りました。





E 最下部ペインの描画

 最下部ペインは、基本クラスは CFormViewで、描画クラスはCSwBtmView が設定されています。

 最下部ペインの描画は、ボタンコントロールをフォームに貼り付けて設定しました。
 ボタンコントロールをフォームに貼り付けると自動的に、CSwBtmView.cppのCSplitWndView::OnDraw( ) に設定されます。






ホームへ戻る