お世話になります。
MFCのSDIプロジェクトにて、
ツールバーを2つ表示しています。
通常は、縦に2つ並べて表示しているのですが、
1つのツールバーをドラッグ移動し、
横に2つを並べたいと思ってます。
実際ドラッグ移動してみると、
横に並ばず、下にずれてしまいます。
この点について、プログラムまたは他の方法で
解決する方法はあるでしょうか?
環境
WindowsXP
VC++6.0
すみません、補足します。
CMainFrameでは以下のように処理し、初期表示時はメインフレームの上に左右でドッキングされた状態になります。
//ヘッダー
protected:
CToolBar m_wndToolBarA;
CToolBar m_wndToolBarB;
//ソース
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;
if(!m_wndToolBarA.Create(this,WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC,IDW_A) || !m_wndToolBarA.LoadToolBar(IDR_TOOLBAR_A)){return -1;}
if(!m_wndToolBarB.Create(this,WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC,IDW_B) || !m_wndToolBarB.LoadToolBar(IDR_TOOLBAR_B)){return -1;}
m_wndToolBarA.SetBarStyle(m_wndToolBarA.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndToolBarB.SetBarStyle(m_wndToolBarB.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBarA.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBarB.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBarA);
// ツールバーAの右にツールバーBをドッキング
RecalcLayout();
CRect rect;
m_wndColorBarYho.GetWindowRect(&rect);
rect.left += 1;
DockControlBar(&m_wndToolBarB, AFX_IDW_DOCKBAR_TOP, &rect);
m_wndToolBarA.SetWindowText("ツールバーA");
m_wndToolBarB.SetWindowText("ツールバーB");
return 0;
}
マウスでAのツールバーを一度でも動かしたりすると、次に左右にドッキングしようとしても、なかなか思うようにドッキングしてくれません。
上記で書きましたように、2行になってフレームにドッキングしてしまいます。
すみません。
OnCreate関数を再度書き直したら
解決できました。(原因不明)
ツイート | ![]() |