Docking Toolbars Side-By-Side

.
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



Comments

  • Docking side by side in the mdi child?

    Posted by rioch on 06/22/2009 11:01am

    I cannot get this to work for the mdichild frame. Is it possible to get the toolbars side by side there as well?

    Reply
  • Docking toolbars in more than one row

    Posted by Laurs on 06/10/2005 08:48am

    It looks that MFC has problems when you try to drag toolbars to posaition them after each other, when there is more than one row. Has anybody a solution?

    Reply
  • http://www.bcgsoft.com

    Posted by Legacy on 08/29/2003 12:00am

    Originally posted by: The Best GUI Tools - VS.NET and Office XP/2003 Look!

    http://www.bcgsoft.com

    Reply
  • Wonderful!

    Posted by Legacy on 07/18/2003 12:00am

    Originally posted by: HS

    Just what I was looking for!!

    Reply
  • Thanks A Lot

    Posted by Legacy on 06/29/2003 12:00am

    Originally posted by: Snakebyte

    I spent more than an hour looking for some toolbar property/method which could do the same In MSDN

    This is exactly what I wanted to do.
    Thanks a lot

    Reply
  • TreeCtrl intoa a dockable Toolbar?

    Posted by Legacy on 02/11/2003 12:00am

    Originally posted by: Manuel

    How can I get into a ToolBar (dockable and resizable) a TreeCtrl

    Reply
  • How to dock a toolbar at right side?

    Posted by Legacy on 12/23/2002 12:00am

    Originally posted by: xianbin zheng

    When create a toolbar and dock at top or bottom, it will align at left defaultly. But what can I do to dock it align right.

    Reply
  • How about three and more toolbars???

    Posted by Legacy on 06/05/2002 12:00am

    Originally posted by: writeus

    While I add three toolbars,It's work wrong!!

    How can I do???

    Help!!!

    Reply
  • Perfect ! ! !

    Posted by Legacy on 04/24/2002 12:00am

    Originally posted by: Johnn J

    Just what i was looking for!

    Reply
  • That seems be good !

    Posted by Legacy on 03/28/2002 12:00am

    Originally posted by: BBBKOM

    You are so creative!

    Reply
  • Loading, Please Wait ...

  • You must have javascript enabled in order to post comments.

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The explosion in mobile devices and applications has generated a great deal of interest in APIs. Today's businesses are under increased pressure to make it easy to build apps, supply tools to help developers work more quickly, and deploy operational analytics so they can track users, developers, application performance, and more. Apigee Edge provides comprehensive API delivery tools and both operational and business-level analytics in an integrated platform. It is available as on-premise software or through …

  • Live Event Date: September 16, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you starting an on-premise-to-cloud data migration project? Have you thought about how much space you might need for your online platform or how to handle data that might be related to users who no longer exist? If these questions or any other concerns have been plaguing you about your migration project, check out this eSeminar. Join our speakers Betsy Bilhorn, VP, Product Management at Scribe, Mike Virnig, PowerSucess Manager and Michele …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds