スプリッタ-ウインドウにToolBarをのせたい。

[戻る]
saito( ); 2002/03/29(金) 15:22:29
いま、VC++を勉強中ですが、スプリッタ-をつかって、以下の
分割ウインドウをつくりました。
Pane-1:CTreeView
Pane-2:CListView
Pane-3:CView(もしくは、CHtmlView)

ここにそれずれ、ToolBarを表示させたい
(ちょうどMDIが3画面あるように)のですが
手法をご存知の方がいれば教えて下さい。
タイトルバーまではわかったのですが・・・・

MDIでそれぞれのウインドウがドッキングできれば
MDIのドッキングの方法がわからなかったので
スタティックスプリッタ-を採用しております。

TAD [E-Mail] 2002/03/30(土) 01:16:53
ツールバーは普通、フレームウィンドウにしかドッキングできません。
そこで、分割ウィンドウの各ペインに、子フレームウィンドウを乗せれば出来るような気がしま
す。
子フレームは、CMainFrame と同じように、CFrameWnd から派生させます。
そして、CMainFrame の OnCreateClient で分割ウィンドウを作成したあと、以下のようなコ
ードを入れます。

// 子フレームの作成
CFrame1* pFrame1 = (CFrame1*)RUNTIME_CLASS(CFrame1)->CreateObject();
if (!pFrame1->Create(NULL, NULL, WS_CHILD | WS_VISIBLE,
    CRect(0, 0, 0, 0), &m_wndSplitter, m_wndSplitter.IdFromRowCol(0, 0)))
    return FALSE;

// ビューの作成
CView1* pView1 = (CView1*)RUNTIME_CLASS(CView1)->CreateObject();
if (!pView1->Create(NULL, NULL, WS_CHILD | WS_VISIBLE,
    CRect(0, 0, 0, 0), pFrame1, AFX_IDW_PANE_FIRST, pContext))
    return FALSE;

これを、すべてのペインに対して行います。
m_wndSplitter の CreateView を呼び出す必要はありませんし、基本クラスの 
OnCreateClient も呼び出してはいけません。
子フレームもビューも、メインウィンドウが破棄されると、自分で自分を delete してくれるの
で、特別な終了処理は不要です。

ツールバーは、それぞれの子フレームの OnCreate の中で作成します。メインウィンドウのツー
ルバーの作成方法と何ら変わりはありません。

たぶん、これでできると思います。

saito( ) 2002/03/30(土) 13:51:44
TADさん、
早速な、しかも丁寧な返事ありがとうございます。
これから、挑戦してみます。
成功したら、またご連絡致します。

またここでご質問させていただく事も
あるかと思いますので、
今後ともよろしくお願いします。

saito( ); 2002/03/30(土) 15:52:22
TADさん、本当に有難うございました。
できました。

しかし、何故すぐわかるんですか?
やっぱり、経験数ですか?

この、ホームページ昨日何気なしに
見つけましたが、
みなさん親切だし、教えていただける
人も多いみたいだし、
非常にいいホームページだと思います。
私も、早く困っているひとに
教えてあげれるようになって、
『恩返しをしなくては・・・・』
と思います。(まだまだ先かも???)

最後に、TADさん有難う御座いました。
またどーしても判らないことがありましいたら
(きっとあると思います)よろしく
お願いします。

saito( ); 2002/03/30(土) 15:56:11
すみません。『解決時チェック』するのを忘れました。
「チェック」します。

saito( ); 2002/03/30(土) 15:57:33
[[解決]]
おちょこちょいですみません。
『ちぇっく』再度します。

古いスレッドには追加発言できません。