「みんな教えて! 選手権!!」開催のお知らせ

VC++6.0 MFC ダイアログバーを横に並べるには?

MainFrameでコントロールバーをいくつか作成しました。
下記のようにやると上下につながります。
ABarの右側にBBarをくっつけるには、どうしたらいいのでしょうか?

ちなみにALIGN_RIGHTにするとメインフレームの右端に張り付いてしまいます。

//ABarを作成
if( !m_wndABar.Create( this, IDD_DLGBAR_A, CBRS_TOP, IDD_DLGBAR_A ) )
{
TRACE0("Failed to create DlgBar\n");
return -1; // 作成に失敗
}
// ドッキング設定
m_wndABar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndAiBar,AFX_IDW_DOCKBAR_TOP);


//BBarを作成
if( !m_wndBBar.Create( this, IDD_DLGBAR_B, CBRS_TOP , IDD_DLGBAR_B ) )
{
TRACE0("Failed to create DlgBar\n");
return -1; // 作成に失敗
}
// ドッキング設定
m_wndBBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndBBar,AFX_IDW_DOCKBAR_TOP);

A 回答 (2件)

#1です。


すみません。#1で注意点があります。

ダイアログバー「ABar、または、BBar」が、CToolBarではなく、
CDialogBarだった場合は、#1の参考サイトの関数をそのまま
使用すると、引数の型違いでコンパイルエラーとなるかもしれ
ません。

もし、エラーとなった場合は、関数 DockControlBarLeftOf()
の定義を以下のように修正する必要があると思います。

<変更前>
・ヘッダーの定義
 void DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf );
・本体側の定義
 void CMainFrame::DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf )
 {
   :
 }

<変更後>
・ヘッダーの定義
 void DockControlBarLeftOf( CControlBar* Bar, CControlBar* LeftOf );
・本体側の定義
 void CMainFrame::DockControlBarLeftOf( CControlBar* Bar, CControlBar* LeftOf )
 {
   :
 }

以上です。
    • good
    • 0

こんにちは。



下記サイトのサンプルコードが参考になると思います。
★複数のツールバーを任意の位置に置く
http://www.geocities.co.jp/SiliconValley-SanJose …

ご提示の構成であれば、
MainFrameクラスに、上記サイトの下記関数
  DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf )
を追加し、ツールバー BBar のドッキング設定の際に、
  DockControlBar( &m_wndBBar, AFX_IDW_DOCKBAR_TOP );
の替わりに、
  DockControlBarLeftOf( &m_wndBBar, &m_wndABar );
   ・第1引数に、これからドッキングさせる自身のツールバーのポインタ
   ・第2引数に、右隣へドッキングさせる対象となるツールバーのポインタ
    ⇒これからドッキングさせる自身のツールバーの左隣となるツールバー
     のポインタ
とすれば良いように思います。

以上です。
    • good
    • 0
この回答へのお礼

できました!
ありがとうございます。

お礼日時:2010/11/09 08:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報