BCGSoft > Developer Area > Outlook Bars

Outlook Bars

The BCGControlBar Library framework supports Outlook-style shortcut control bars. You can use these bars to enhance workspace management in your application.

The shortcuts bar has the following elements:
  • Caption - displays the currently selected page name
  • Page with shortcut buttons or embedded control
  • Splitter between page and page buttons
  • Page buttons with a page name and icon on left
  • Bottom-located toolbar with page small icons and options menu


The functionality of "outlook" control bars is provided by CBCGPOutlookBar class. To use this class please perform the following steps:

  1. Add outlook page large icons list to your application resources (the suggested icon size is 24x24. For example, the resource ID will be IDB_PAGES.
  2. Add outlook page small icons list (will be displayed on the bottom-located toolbar) to your application resources (the suggested icon size is 16x16). For example, the resource ID will be IDB_PAGES_SMALL.
  3. Prepare icons for each shortcut (IDI_SHORTCUT1, IDI_SHORTCUT1, ...).
  4. Add the following members to your CMainFrame class:
    1. CBCGPOutlookBar m_wndShortcutsBar;
    2. CBCGPOutlookBarPane m_wndShortcutsPane1;
    3. CBCGPOutlookBarPane  m_wndShortcutsPane2;
  5. Initialize the shortcuts bar in CMainFrame::OnCreate by the following way:

CBCGPOutlookWnd::EnableAnimation ();

const int nInitialWidth = 150;
const CString strCaption = _T("Shortcuts");


if (!m_wndShortcutsBar.Create (strCaption, this,  CRect (0, 0, nInitialWidth, nInitialWidth),
    TRACE0("Failed to create outlook bar\n");
    return FALSE; // fail to create

CBCGPOutlookWnd* pShortcutsBarContainer = DYNAMIC_DOWNCAST
    (CBCGPOutlookWnd, m_wndShortcutsBar.GetUnderlinedWindow ());
if (pShortcutsBarContainer == NULL)
    TRACE0("Cannot get outlook bar container\n");
    return FALSE;

pShortcutsBarContainer->SetImageList(IDB_PAGES, 24);
pShortcutsBarContainer->SetToolbarImageList(IDB_PAGES_SMALL, 16);

// Create first page:
m_wndShortcutsPane1.Create (&m_wndShortcutsBar, dwDefaultToolbarStyle,
m_wndShortcutsPane1.SetOwner (this);
m_wndShortcutsPane1.EnableTextLabels ();
m_wndShortcutsPane1.EnableDocking (CBRS_ALIGN_ANY);

m_wndShortcutsPane1.AddButton (theApp.LoadIcon(IDI_SHORTCUT1), _T("Shortcut 1"),
m_wndShortcutsPane1.AddButton (theApp.LoadIcon(IDI_SHORTCUT2), _T("Shortcut 2"),

pShortcutsBarContainer->AddTab (&m_wndShortcutsPane1, _T("Page 1"), 0, FALSE);
m_wndShortcutsPane1.EnableDocking (CBRS_ALIGN_ANY);

// Create second page:
m_wndShortcutsPane2.Create (&m_wndShortcutsBar,  dwDefaultToolbarStyle,

m_wndShortcutsPane2.SetOwner (this);
m_wndShortcutsPane2.EnableTextLabels ();
m_wndShortcutsPane2.EnableDocking (CBRS_ALIGN_ANY);

m_wndShortcutsPane2.AddButton (theApp.LoadIcon(IDI_SHORTCUT3), _T("Shortcut 3"),
m_wndShortcutsPane2.AddButton (theApp.LoadIcon(IDI_SHORTCUT4), _T("Shortcut 4"),

pShortcutsBarContainer->AddTab (&m_wndShortcutsPane2, _T("Page 2"), 1, FALSE);


Back to the Developer Area