分割ウィンドウの作り方2006年10月26日 16時08分37秒

Visual C++
1.メインフレームのメンバ変数にCSplitterWndのインスタンスを追加する。
2.メインフレームにCFrameWnd::OnCreateClient()のオーバーライドを作成する。
3.ペインに割り当てるビューを定義する。
4.CFrameWnd::OnCreateClient()の中でペインの定義を行う。
  CSplitterWnd::Create()またはCSplitterWnd::CreateStatic()
5.ペインにビューを結び付ける。
  CSplitterWnd::CreateView()

● CSplitterWnd
ウィンドウを分割する機能を持つクラス。
分割したいウィンドウと結び付けて使用する。
分割された個々のクライアント領域をペインと呼ぶ。
ペインはメインフレームのCFrameWnd::OnCreateClient()内で初期化する。
動的分割ウィンドウの場合はCSplitterWnd::Create()を使用する。
静的分割ウィンドウの場合はCSplitterWnd::CreateStatic()を使用する。
ペインへのビュー割り当てはCSplitterWnd::CreateViewを使用する。

● 動的分割ウィンドウ
分割ウィンドウには初期状態では一つのビューしかない。
分割ボックスをユーザーの操作することで新しいペインが生成される。
● 静的分割ウィンドウ
分割ウィンドウが生成される同時にペインも生成される。
ペインの配置順序や数は固定されている。

● CSplitterWnd::Create( ~ )
動的分割ウィンドウとしてCSplitterWndインスタンスを初期化する。
<戻り値>
正常終了
0 以外
その他
0
<パラメータ>
pParentWnd
分割するウィンドウ
nMaxRows
分割ウィンドウの最大行数
2 以下にする必要がある。
nMaxCols
分割ウィンドウの最大列数2 以下にする必要がある。
sizeMin
ペインが表示されるときの最小値のサイズ
pContext
CCreateContext構造体へのポインタ
CFrameWnd::OnCreateClient()の引数pContextを渡せばよい。
dwStyle
ウィンドウスタイル
Default = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT
nID
ウィンドウの子ウィンドウID
他の分割ウィンドウの中で入れ子になっていない場合はAFX_IDW_PANE_FIRST
分割ウィンドウに対して一意であればOK?

● CSplitterWnd::CreateStatic()
静的分割ウィンドウとして CSplitterWnd インスタンスを初期化する。
<戻り値>
正常終了
0 以外
その他
0
<パラメータ>
pParentWnd
分割するウィンドウ
nRows
分割ウィンドウの行数
16 以下にする必要がある。
nMaxCols
分割ウィンドウの列数
16 以下にする必要がある。
dwStyle
ウィンドウスタイル
Default = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT
nID
ウィンドウの子ウィンドウID
他の分割ウィンドウの中で入れ子になっていない場合はAFX_IDW_PANE_FIRST

● CSplitterWnd::CreateView()
ペインにビューを結び付ける。
<戻り値>
正常終了
0 以外
その他
0
<パラメータ>
row
新しいビューを配置する分割ウィンドウの行番号
一番左が 1で、右に行く毎に +1
col
新しいビューを配置する分割ウィンドウの列番号
一番上が 1で、下に行く毎に +1
pViewClass
新しいビューのCRuntimeClassポインタ
マクロ関数で生成する場合は RUNTIME_CLASS( ビュークラス名 )
sizeInit
新しいビューの初期サイズ
pContext
CCreateContext構造体へのポインタ
CFrameWnd::OnCreateClient()の引数pContextを渡せばよい。

大丈夫かな・・・?2006年10月26日 23時53分36秒

今日は仕事中に作ってたネタ帳をブログに載せてみたんだけど、考えてみたらいきなり突飛な記事が登場する形になっちゃったね。
下の記事はプログラミング関係の覚え書きなんですよ。必要最低限の情報しか書いてないから、サンプルコードを探している人には無用の品になるかな?

で、こういうのを載せてプログラミングに興味を持っている人が釣れたら嬉しいかな~って思ってみたりする今日この頃なのです。