|
Prev: pharmacie en ligne us usacitrate de Rimonabant bon marche canadaacheter acomplia canada generiqueacheter acomplia canadacommander acomplia en France soft
Next: How to dock the second and third toolbars to the right corner of t
From: rshoba on 21 May 2008 23:35 Hi, I have created a main toolbar, and two more toolbars. All three are aligned at TOP, one below the other. I use DockControlBar to dock them. m_ToolBar1.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); m_ToolBar2.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); m_ToolBar3.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_ToolBar1); DockControlBar(&m_ToolBar2); DockControlBar(&m_ToolBar3); It was all fine till this point. The problem comes next. Now, I need to have them all in a single line. It should look something like this. ---------------------------------------------------------------------------------------------------------------------------------------------------- | m_ToolBar1| |m_ToolBar2|m_ToolBar3| ----------------------------------------------------------------------------------------------------------------------------------------------------- I tried a lot to bring the toolbars in these positions, but in vain. I googled a lot and found DockControlBarLeftOf ()sample present in MSDN. But that too is not serving my purpose, as I need to dock the second and third toolbars in the top right corner of the First toolbar and most importantly, the second and third toolbars should be a dockable ones. So, just cannot use DockControlBarLeftOf(). I would extremly appreciate it, if someone could shed some light on it, as I tried many many possiblities and found nothing working.
From: Ajay Kalra on 22 May 2008 10:02 On May 21, 11:35 pm, rsh...(a)gmail.com wrote: > Hi, > > I have created a main toolbar, and two more toolbars. All three are > aligned at TOP, one below the other. I use DockControlBar to dock > them. > > m_ToolBar1.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); > m_ToolBar2.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); > m_ToolBar3.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); > > EnableDocking(CBRS_ALIGN_ANY); > > DockControlBar(&m_ToolBar1); > DockControlBar(&m_ToolBar2); > DockControlBar(&m_ToolBar3); > > It was all fine till this point. The problem comes next. > > Now, I need to have them all in a single line. It should look > something like this. > > ---------------------------------------------------------------------------------------------------------------------------------------------------- > | > m_ToolBar1| > |m_ToolBar2|m_ToolBar3| > ----------------------------------------------------------------------------------------------------------------------------------------------------- > > I tried a lot to bring the toolbars in these positions, but in vain. I > googled a lot and found DockControlBarLeftOf ()sample present in MSDN. > But that too is not serving my purpose, as I need to dock the second > and third toolbars in the top right corner of the First toolbar and Picture that you drew above does not match with what you have written. DockControlBarlefOf should work for m_toolBar2. What you are writing though is that you want to right justify two toolbars. If yes, MFC doesnt have anything like this for docking. -- Ajay
From: AliR (VC++ MVP) on 22 May 2008 10:14
It worked just fine when I tried it like this: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } if (!m_wndToolBar2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar2.LoadToolBar(IDR_MAINFRAME2)) { TRACE0("Failed to create toolbar\n"); return -2; // fail to create } if (!m_wndToolBar3.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar3.LoadToolBar(IDR_TOOLBAR1)) { TRACE0("Failed to create toolbar\n"); return -2; // fail to create } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY); m_wndToolBar3.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); DockControlBar(&m_wndToolBar2); DockControlBarLeftOf(&m_wndToolBar3,&m_wndToolBar2); return 0; } 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); } Here is where got the DockControlBarLeftOf http://www.codeproject.com/KB/toolbars/toolbar_docking.aspx AliR. <rshoba(a)gmail.com> wrote in message news:3939094e-87b9-4133-890d-78546dd45628(a)y22g2000prd.googlegroups.com... > Hi, > > I have created a main toolbar, and two more toolbars. All three are > aligned at TOP, one below the other. I use DockControlBar to dock > them. > > m_ToolBar1.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); > m_ToolBar2.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); > m_ToolBar3.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM); > > EnableDocking(CBRS_ALIGN_ANY); > > DockControlBar(&m_ToolBar1); > DockControlBar(&m_ToolBar2); > DockControlBar(&m_ToolBar3); > > It was all fine till this point. The problem comes next. > > Now, I need to have them all in a single line. It should look > something like this. > > ---------------------------------------------------------------------------------------------------------------------------------------------------- > | > m_ToolBar1| > |m_ToolBar2|m_ToolBar3| > ----------------------------------------------------------------------------------------------------------------------------------------------------- > > I tried a lot to bring the toolbars in these positions, but in vain. I > googled a lot and found DockControlBarLeftOf ()sample present in MSDN. > But that too is not serving my purpose, as I need to dock the second > and third toolbars in the top right corner of the First toolbar and > most importantly, the second and third toolbars should be a dockable > ones. So, just cannot use DockControlBarLeftOf(). > > I would extremly appreciate it, if someone could shed some light on > it, as I tried many many possiblities and found nothing working. |