ツールバーのドラッグ移動について

解決


初心者  2007-04-25 04:21:01  No: 64990

お世話になります。

MFCのSDIプロジェクトにて、
ツールバーを2つ表示しています。

通常は、縦に2つ並べて表示しているのですが、
1つのツールバーをドラッグ移動し、
横に2つを並べたいと思ってます。

実際ドラッグ移動してみると、
横に並ばず、下にずれてしまいます。

この点について、プログラムまたは他の方法で
解決する方法はあるでしょうか?

環境
  WindowsXP 
  VC++6.0


初心者  2007-04-25 19:38:47  No: 64991

すみません、補足します。
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行になってフレームにドッキングしてしまいます。


初心者  2007-04-26 01:25:28  No: 64992

すみません。

OnCreate関数を再度書き直したら
解決できました。(原因不明)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加