Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

TabedReBar Control

0.00/5 (No votes)
4 Jun 2004 2  
ReBar control which displays bars via tab panes.

Sample Image - TabedReBar.jpg

Overview

This article implements TabedReBar control similar to CReBar which displays bars via Tab control. The main propose of the TabedReBar control is reducing space of the MainFrame window by collecting several bars in one TabedReBar. Each bar (ToolBar, StatusBar, DialogBar etc.) added in TabedReBar is separated by a Tab.

Class CBHTabedReBar

The CBHTabedReBar is derived from CControlBar and contains the following methods and data members:

Methods

void DrawGripper(CDC* pDC); //Draws griper on left side of the control

BOOL AddBar(CControlBar*pBar,LPCTSTR pszText = NULL);//Add Bars to TabedReBar

CTabCtrl& GetTabCtrl() const; // access the tab control


//{{AFX_MSG(CBHTabedReBar)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTabSelChange(NMHDR* pNMHDR, LRESULT* pResult) ;
afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
//}}AFX_MSG


//{{AFX_VIRTUAL(CBHTabedReBar)

virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
virtual BOOL Create( CWnd* pParentWnd,
                           DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
                           UINT nID = AFX_IDW_TABED_REBAR);
virtual CSize CalcFixedLayout( BOOL bStretch, BOOL bHorz );
virtual void DoPaint(CDC* pDC); // overriden virtual member

//{{AFX_VIRTUAL

Members

int                            m_nToobBarHeight;//height of tab


int                            m_nActiveTab; // currently active tab


CRect                          m_rectClient; // rect of the tab control


CList <TCB_ITEM *,TCB_ITEM *>  m_Bars; // list of derived ControlBars


CTabCtrl                       m_tabctrl; // Tab Control

Implementation

CBHTabedReBar class supports docking (top, bottom from now) and floating features. Define CBHTabedReBar class object on the same way as you define CReBar.

In MainFrm.h, declare variable CBHTabedReBar:

CBHTabedReBar m_wndTabedReBar;

In MainFrm.cpp, in OnCreate message member after creation of ToolBars, DialogBar etc., add code similar to this:

int CMainFrame:: OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//................

//Here comes standard creation code

//Creation code for CBHTabedReBar control



m_wndTabedReBar.Create(this);
m_wndTabedReBar.SetWindowText("Tabed ReBar");
m_wndTabedReBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
                            CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

//Adding Bars to TabedReBar control

m_wndTabedReBar.AddBar(&m_wndToolBar1,"Standard Toolbar");
m_wndTabedReBar.AddBar(&m_wndExplererToolBar,"Explorer Toolbar");
//Adding Icons to Tab Control


m_images.Create(IDB_TABIMAGES, 16, 1, RGB(255,0,255));
m_wndTabedReBar.GetTabCtrl().SetImageList(&m_images);
}

Update History

  • 1.0.0.109 June 5. 2004, First release version.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here