.
If you are interested in more articles written by Kirk Stowell, you can
click here to visit his home page.
There are several articles about docking toolbars, however, I felt that this was
important enough to mention here. The same information can be found at
Microsofts MSDN site, here
it is in a nutshell:
Add the following method to your CMainFrame class:
void CMainFrame::DockControlBarLeftOf(CToolBar* Bar, CToolBar* LeftOf) { CRect rect; DWORD dw; UINT n; // get MFC to adjust the dimensions of all docked ToolBars // so that GetWindowRect will be accurate RecalcLayout(TRUE); LeftOf->GetWindowRect(&rect); rect.OffsetRect(1,0); dw=LeftOf->GetBarStyle(); n = 0; n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n; n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n; n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n; n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n; // When we take the default parameters on rect, DockControlBar will dock // each Toolbar on a seperate line. By calculating a rectangle, we // are simulating a Toolbar being dragged to that location and docked. DockControlBar(Bar,n,&rect); }
Now, in your CMainFrame::OnCreate, instead of using DockControlBar,
use DockControlBarLeftOf:
m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY); m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar1); DockControlBarLeftOf(&m_wndToolBar2,&m_wndToolBar1);
This will dock m_wndToolBar2 left of m_wndToolBar1.
Download demo project - (29 KB)
Last updated December 21, 1998