Skip Navigation LinksBCGSoft > Release Notes > BCGControlBar Pro for MFC Versions (archive)

Release Notes Archive: BCGControlBar Pro for MFC

Version 25.1. Released 11/30/2016

New features:

  1. Chart Control
    1. Implemented Box-Plot charts (see screenshot). Box-plot series can draw Minimal value, Q1, Q2, Q3, Maximum value or/and Average value with/without Notches. The API changes are:
      • Added new chart category BCGPChartCategory::BCGPChartBoxPlot.
      • Added new classes CBCGPChartBoxPlotSeries and CBCGPBoxPlotChartImpl.
    2. Added chart Error Bars (see screenshot) to the following chart categories: bar/column, line, area and polar/radar charts. Error bars support the following types of errors for all chart types (simple, stacked, 100% stacked):
      1. EBT_SEM_SE - Standard error of the mean based on a sample of the population
      2. EBT_SEM_SD - Standard error of the mean based on the entire population
      3. EBT_STD_S - Standard deviation based on a sample of the population (corrected sample standard deviation)
      4. EBT_STD_P - Standard deviation based on the entire population
      5. EBT_FIXED - Fixed value for each data point
      6. EBT_PERCENT – Fixed percent for each data point
      7. EBT_DIFF – Difference between previous and current data points
      8. EBT_CUSTOM – The framework calls the BCGPCHART_ERRORBARS_CALLBACK function to calculate the values for each data point The API changes are:
      • New class CBCGPChartErrorBarsSeries implements the Error Bars.
      • New method CBCGPChartSeries::CreateErrorBars creates the Error Bars for the existing chart series.
      • New CBCGPChartVisualObject virtual method OnDrawDiagramErrorBars allows to customize the error bar appearance in the different charts such as Line, Area, Column and others.
    3. Chart Visual Manager style (see screenshot): you can easily apply the currently activated Visual Managers colors to the chart background and axis colors - simply pass TRUE to new, optional parameter 'bUseVisualManagerTheme' of CBCGPChartVisualObject::SetColors method. In addition, 'CBCGPChartTheme' structure has a new member 'VisualManagerTheme' (SetVisualManagerTheme/IsVisualManagerTheme access methods were added). When the Visual Manager is changed, chart automatically adapts its colors to the application new theme. Please take a look at BCGPMSOfficeDemo ("Product Sales" pane) to see this new feature in action.
    4. The data points tooltip content can be customized now by overriding new CBCGPChartVisualObject virtual methods:
      • OnFormatDataPointTooltip
      • OnFormatDataPointTooltipDescription
    5. New attribute BCGPChartDataLabelOptions::m_bOverlapsArea specifies whether a data label can be drawn outside the chart area.
  2. Explorer-style toolbar
    1. Implemented Windows 10-style "simplified" navigation buttons (see screenshot). Instead of the blue circles simple arrows are being rendered in this mode. CBCGPExplorerToolBar::EnableNavigationButtons has a new optional parameter 'BOOL bSimplifiedNavigationButtons'.
    2. Added optional 'Up' button. CBCGPExplorerToolBar::EnableNavigationButtons has a new optional parameter 'UINT nUpID'.
    3. CBCGPExplorerToolBar::EnableNavigationButtons can be called several times to change the explorer bar appearance and functionality at runtime. Please take a look at new sample ExplorerBarDemo to see this new functionality in action.
  3. Ribbon Bar
    1. Backstage view command icons style is customizable now (see screenshot). Call a new method CBCGPRibbonBar::SetBackstageViewIconsStyle to specify the icons style.
    2. Implemented Backstage View page captions (see screenshot). New method CBCGPRibbonBar::EnableBackstagePageCaptions enables/disables the page captions.
    3. Added new virtual method CBCGPRibbonBar::GetBackstageViewItemFont - override it if you wish to change Backstage view items font.
    4. New optional parameter 'nColumns' of CBCGPRibbonQuickStepsButton constructor is specifying initial number of the "quick steps" gallery columns.
    5. Implemented vertical scrolling in the Ribbon Dialog bar.
    6. CBCGPBaseRibbonElement has a new virtual method OnBeforeDestroyParentMenuBar: override this method if you wish to implement some actions before control will be destroyed.
  4. Visual Container and controls
    1. Added Visual Manager-based color themes:
      • Circular Gauge (see screenshot): CBCGPCircularGaugeColors enumerator has a new member BCGP_CIRCULAR_GAUGE_VISUAL_MANAGER
      • Linear Gauge (see screenshot): CBCGPLinearGaugeColors enumerator has a new member BCGP_LINEAR_GAUGE_VISUAL_MANAGER
    2. The Visual Container Object resizing can be limited to specific sides. The following new values can be added to the object editing flags:
  5. Toolbars and menus
    1. Added ability to gray-out the toolbar/menu disabled icons (see screenshot). Call new static method CBCGPToolBar::SetGrayDisabledImages to enable/disable this feature. BCGPVisualStudioGUIDemo example illustrates this new feature (VS 2013/2015 and Office 2013/2016 themes).
    2. New static method CBCGPToolBar::UseDefaultResourceHandle specifies whether toolbar resources should be loaded from the current resources (specified by AfxSetResourceHandle) or custom (specified by new member CBCGPToolBarParams::m_hResourceHandle).
    3. Toolbar combo box custom fonts: SetCustomFont and GetCustomFont methods were added to CBCGPToolbarComboBoxButton class.
  6. Outlook Bar
    1. Implemented collapse ("minimize") mode (see screenshot). The following new methods were added to CBCGPOutlookWnd class:
      • EnableCollapseMode
      • IsCollapseModeEnabled
      • IsCollapsed
      • Expand
    2. Added tooltips to Outlook bar page buttons with truncated text (see screenshot). BCGPOutlookDemo example demonstrates these New features:.
  7. Combo Box control
    1. Icons can be added to the combo box items (see screenshot). CBCGPComboBox has a following new icons managements methods:
      • SetImageList: specifies combo box icons list.
      • SetItemImage: sets the icon to the specific item.
      • GetItemImage: gets the icon of specific item.
    2. Implemented items indentation (see screenshot) - the following new methods were added to CBCGPComboBox:
      • SetItemIndent: sets specific item indentation.
      • GetItemIndent: obtains the indentation value of specific item. ComboBoxDemo sample application demonstrates these new features.
  8. Breadcrumb control
    1. Implemented background progress bar (see screenshot). The following new methods were added to CBCGPBreadcrumb class:
      • SetProgress - sets background progress value.
      • GetProgress - obtains the current progress value.
    2. Improved control appearance in some Visual Managers (see screenshot). New BreadcrumbDemo sample demonstrates these New features:.
  9. WinUI Tiles control
    1. Implemented Visual Manager-based color theme (see screenshot). SetVisualManagerTheme and IsVisualManagerTheme methods were added to CBCGPWinUITiles class. Please take a look at new sample ExplorerBarDemo to see this new style.
    2. WinUI Tile image vertical alignment: SetImageVertAlign and GetImageVertAlign methods were added to CBCGPWinUITile class.
  10. Grid control
    1. New virtual method CBCGPGridItem::ExportToHTML allows to customize HTML-export for custom grid items and merged cells. For example, you can save an embedded grid cell chart as an external picture and add a reference to this file in the HTML code. Please take a look at BCGPGridExample ("Merge Cells" and "Sparklines" views - see screenshot).
    2. New virtual CBCGPGridCtrl::GetRowNumber allows to customize row numbering.
    3. New method CBCGPGridColumnsInfoEx::AddHeaderItem returns a pointer to a header item, that allows to customize multiline and merged headers.
    4. Extended support for the password characters in in-place editor with CBCGPEdit::BrowseMode_PasswordPreview flag.
  11. Visual Manager:
    1. The following new virtual methods were added to CBCGPVisualManager class:
      1. OnDrawOutlookPopupButton renders Outlook Bar 'popup' buttons.
      2. GetChartColors: override this method if you wish to customize chart control appearance.
      3. GetCircularGaugeColors: override this method if you wish to customize circular gauge appearance.
      4. GetLinearGaugeColors: override this method if you wish to customize linear gauge appearance.
      5. GetWinUITilesColors: override this method if you wish to customize WinUI tiles appearance.
      6. BreadcrumbFillProgress: renders breadcrumb control background progress.
      7. IsRibbonCaptionTextCentered: tells whether the Ribbon Bar caption text is centered.
      8. IsSimplifiedBackstageViewIcon: tells whether the Backstage View command icon has a simplified look.
    2. Improved Office 2013 Dark Gray theme (see screenshot).
    3. CBCGPVisualManagerScenic: slider zoom buttons are scaled now according to current DPI.
  12. Controls
    1. Slider control: added zoom buttons (see screenshot). EnableZoomButtons and HasZoomButtons methods were added to CBCGPSliderCtrl. In addition, we added zoom buttons to "Zoom" slider located on built-in Ribbon Backstage "Print" page (see screenshot).
    2. Implemented ability to specify system user input in Shell controls: EnableSystemUserInput and IsSystemUserInputEnabled methods were added to CBCGPShellBreadcrumb, CBCGPShellList and CBCGPShellTree classes. An example of the system user input would be a dialog box to ask for a password or prompt the user to insert a CD or floppy disk.
    3. Added ability to specify a number of characters in the calendar's week days: SetMaxWeekDayCharacters and GetMaxWeekDayCharacters methods were added to to CBCGPCalendar and CBCGPDateTimeCtrl classes.
    4. CBCGPEdit::EnablePasswordPreview has a new, optional parameter 'bAllowEditingInPreview'.
  13. Miscellaneous
    1. The product Integration Wizard has an option to build libraries with Windows XP platform toolset.
    2. Improved visual themes support in CBCGPAppBarWnd control (see screenshot). Please take a look ar SideBarDemo sample application to see application bar new appearance.
    3. Tasks Pane and Toolbox: implemented ability to hide a single group caption: HideSingleGroupCaption and IsHideSingleGroupCaption methods were added to CBCGPTasksPane class.
    4. LPARAM of BCGM_ON_CLICK_CAPTIONBAR_HYPERLINK registered message contains a pointer to CBCGPCaptionBar where hyperlink was clicked.
    5. New member of CBCGPDialog 'm_bDisableShadows' allows to disable dialog frame shadow: if for some reason you don't want to display the shadow, just set m_bDisableShadows = FALSE in the dialog's class constructor. The same member was added to CBCGPPropertySheet class.
    6. New parameter 'bShowCaret' of CBCGPEditCtrl::SetReadOnly method allows to display the caret in read-only mode.
    7. CBCGPPropertySheet::SetLook has a new optional parameter 'bSimplifiedBackIcon' specifying whether the Aero Wizard "Back" button has a simplified (arrow only) look.
    8. New optional parameter of CBCGPProp::Enable and CBCGPPropList::EnableProperty methods 'BOOL bIncludeSubItems" allows to enable/disable property grid items recursively.
    9. CBCGPStatusBar has a new virtual method 'OnPaneSizePosChanged'. Override this method if you need to add some actions upon status bar pane layout changing, e.g. repose a control embedded in the pane.
    10. CBCGPTabWnd::ModifyTabStyle has a new optional parameter 'bUpdateScrollControls'. Set this parameter to TRUE if you wish to update tab scrolling controls.
  14. Examples and samples:
    1. BCGPChartExample: demonstrates new box plot and error bars. In addition, you can see charts in the dark visual themes.
    2. BCGPDigitalDashboard: demonstrates export to bitmap visual container with embedded controls.
    3. BCGPExplorer: demonstrates explorer toolbar New features: such as "Up" button and simplified navigation buttons.
    4. BCGPGaugesDemo: demonstrates new Visual Manager gauge themes.
    5. BCGPGridExample: demonstrates export to HTML embedded chart objects (see "Merged Cells" and "Sparkline" views).
    6. BCGPMSOfficeDemo: illustrates chart control with Visual Manager style and Ribbon Backstage View page captions.
    7. BCGPOutlookDemo: demonstrates how to create a collapsible Outlook pane.
    8. BCGPVisualStudioGUIDemo: demonstrates toolbar "grayed disabled buttons (VS 2012/2013/2015 and Office 2013/2016 themes).
    9. BreadcrumbDemo (see screenshot): this new sample application demonstrates breadcrumb control new and existing features.
    10. ComboBoxDemo: demonstrates combo box item icons and indentations.
    11. ExplorerBarDemo (see screenshot): this new sample application demonstrates an Explorer toolbar New features: and WinUI Tiles control in Visual Manager style.


  1. Tooltip control: fixed bug with partially rendering of tooltip content under Windows 8.x/10 (sometimes the tooltip was clipped to the default size).
  2. Tab control: fixed in-place editor location in some tab control styles.
  3. Tab control: a "New" tab width is correctly calculated now in all tab control styles.
  4. Breadcrumb control: correctly sub-classes disabled (with WS_DISABLED style) window.
  5. CBCGPChartStockSeries::OnGetDataPointTooltip and CBCGPChartVisualObject::OnGetToolTip load a format string from the localized resource DLL now.
  6. Frame windows are forwarding incoming BCGM_CHANGEVISUALMANAGER messages to all their views now, not only to the active one. This fixes issues with changing visual theme in multi-views frame such as tabbed view or view with embedded splitter window.
  7. Fixed problems with moving frame or dialog window between monitors with different DPI values.
  8. Fixed some bugs with processing legacy gestures.
  9. BCGPMessageBox: fixed font selection bug.
  10. Property Grid: CBCGPProp::RemoveAllSubItems clean-up the currently selected or highlighted sub-items.
  11. CBCGPRadialMenuObject doesn't "eat" mouse clicks now when user is frequently double-clicking the left button.
  12. CBCGPRibbonButton: fixed bug with positioning of drop-down arrow in the high DPI modes.
  13. CBCGPRibbonButtonsGroup: correctly renders disabled icons if developer called SetGrayDisabledImages parent Ribbon bar method.
  14. CBCGPStatusBar::SetIndicators releases previously allocated tooltip data.
  15. Visual Container: fixed bug with inaccurate hit-testing of the selected object resizing anchors.
  16. Combo box control: the control height is correctly calculated now in some DPI modes.
  17. CBCGPEditCtrl: fixed bug with syntax coloring for escape sequences like \" inside a text constants.
  18. CBCGPEditCtrl: fixed a displayed character for hidden whitespaces like TAB and SPACE in Far-Eastern languages.
  19. CBCGPEditCtrl: fixed some scrolling issues in editor.
  20. Grid control: auto scrolling fixed. The grid now scrolls content while selecting when mouse cursor is out of the client area or near the border.
  21. Fixed underline font in CBCGPGridURLItem.
  22. Grid control: fixed some problems with MSAA.
  23. Grid control: fixed horizontal image alignment in the header of the grid control.
  24. Ribbon bar: corrected system icon position in the ribbon caption when DWM composition is enabled.
  25. Dialog boxes: fixed problem with displaying the window system menu when dialog was created without ‘WS_SYSMENU’ style.
  26. MDI child frame: fixed bug with position of the thumbnail preview when MDI frame window is maximized or has a Ribbon Bar control.

Version 25.0. Released 06/16/2016

New features:

  1. Visual Themes
    1. Implemented new Office 2016 Black theme (see screenshot). Although this color theme was excluded from MS Office 2016 final release, we got a lot of customer requests to add this theme to our framework and we decided to make this addition. The API changes are:
      • CBCGPVisualManager2016 has a new style 'Office2016_Black' (should be used in CBCGPVisualManager2016::SetStyle method).
      • BCGP_VISUAL_THEME enumerator has BCGP_VISUAL_THEME_OFFICE_2016_BLACK new member. Please run BCGPMSOfficeDemo, BCGPVisualStudioGUIDemo and other examples to see this new theme.
    2. Application state color (see screenshot): you can specify the application "state" color (status bar background, VS 2012 or higher visual themes) by calling new static methods CBCGPVisualManagerVS2012::SetStateColor or CBCGPVisualManagerVS2012::SetStateColorRGB. Please take a look at BCGPVisualStudioGUIDemo example: when "Start Page" view is activated, the status bar background color is purple, but when you create a new "Web" document and activate it, this background color will be dark green.
    3. Improved planner appearance in Office 2013/2016 themes (see screenshot).
    4. Better look of tab control located at the dialog/property page.
  2. Grid and Report controls
    1. A long-awaited advanced tree control is ready in this version (see screenshot)! A new class CBCGPTreeCtrlEx is based on the Grid control and implements CTreeCtrl-like window with the following additional and improved features:
      1. Multiple columns with ability to sort node sub-items.
      2. Header control.
      3. Item or column check boxes.
      4. Visual themes support.
      5. Grid or tree look. Please take a look at new sample TreeCtrlDemo to see this control in action.
    2. Implemented grid row check boxes. The following new methods were added to CBCGPGridCtrl class:
      • EnableCheckBoxes: enable/disable the grid row check boxes.
      • IsCheckBoxesEnabled: tells whether the grid row check boxes are enabled.
      • CheckAll: check/uncheck all grid rows.
      • OnRowCheckBoxClick: called when user clicks the row check box.
      • OnHeaderCheckBoxClick: called when user clicks the header (column) check box. New notification messages BCGM_GRID_ROW_CHECKBOX_CLICK and BCGM_GRID_HEADERCHECKBOX_CLICK allow to catch click on row/header check box events.
    3. Added ability to enable/disable grid "alternate" rows: EnableAlternateRows and IsAlternateRowsEnabled methods were added.
  3. Ribbon Bar
    1. The Ribbon commands search ("Tell Me") has been significantly extended. Now the customer can fully customize search using new CBCGPRibbonCommandSearchOptions structure:
      • m_bSuppressDisabledCommands: specifies whether currently disabled commands should be excluded from the search results.
      • m_nMaxResults: maximal number of commands in the search results list (5 by default).
      • m_bSearchInHiddenCategories: specifies whether the framework should search the hidden Ribbon tabs too. Please call new methods CBCGPRibbonBar::SetCommandSearchOptions to specify the Ribbon command search options or CBCGPRibbonBar::GetCommandSearchOptions to get them.
    2. Improved Ribbon Backstage View property sheet functionality (see screenshot):
      1. The property page icons are automatically scaled now according to the current DPI: a new 'bIconsAutoScale' parameter was added to CBCGPRibbonBackstageViewItemPropertySheet constructor.
      2. Added property page headers: if new optional parameter of CBCGPRibbonBackstageViewItemPropertySheet constructor 'bDefaultPageHeader' is TRUE, the page name will be placed under the page controls.
      3. A recent file/folder icon can be customized by overriding new CBCGPFrameWnd/CBCGPMDIFrameWnd method 'OnGetRecentFileIcon'.
      4. The Ribbon bar sends a new registered message 'BCGM_OPEN_PINNED_FILE' when user clicks a recent file name.
    3. Added ability to specify Ribbon icons luminosity: call new method CBCGPRibbonBar::SetImagesLuminosity to make icons lighter or darker, depending on the currently activated Visual Theme. This feature is useful when you load "dark" icons with the dark theme such as Office 2016 Black or Visual Studio 2013 Dark. Please take a look at BCGPMSOfficeDemo example where we're using the same icon set for all visual themes.
    4. CBCGPRibbonPaletteButton::implemented a new "combo" mode. In this mode all gallery items are aligned in one column (see screenshot). The following new methods were added to CBCGPRibbonPaletteButton class:
      • SetComboMode: set the combo mode.
      • OnDrawComboItemText: override this method to customize the item drawing.
      • GetComboItemTextSize: override this method to return your custom item size.
    5. Added user-defined data to CBCGPRibbonPaletteButton items:
      1. CBCGPRibbonPaletteButton::SetItemUserData: assign data to the gallery item.
      2. CBCGPRibbonPaletteButton::GetItemUserData: get data associated with the gallery item.
    6. CBCGPRibbonButton::EnablePopupDialog method has a new optional parameter 'BOOL bIsRightAligned = FALSE'. Set this parameter to TRUE if you wish to display the popup dialog on the button right side.
    7. CBCGPRibbonPanel::SetAlwaysAlignByColumn allows to "force" align-by-column mode even if panel contains "align-by-row" controls such as groups.
    8. A new virtual method CBCGPRibbonToolsPage::OnSelectionChanged is called when user selects a tool in the Ribbon tools list.
  4. Visual Container and controls
    1. A Visual Container has "Snap to Grid" new feature: to enable it, add BCGP_CONTAINER_SNAP_TO_GRID new flag to CBCGPVisualContainer::EnableEditMode method. If some visual object shouldn't support this feature, override IsSnapTpGridAvailable virtual method and return FALSE.
    2. Added Visual Container grid style: it can be either BCGP_VISUAL_CONTAINER_GRID_LINES (default) or BCGP_VISUAL_CONTAINER_GRID_DOTS. CBCGPVisualContainer::SetGridBrush has a new optional parameter 'style' and new access methods SetGridStyle/GetGridStyle allow to modify/get the container grid style.
    3. Added 2 new notification messages:
      1. BCGM_CONTAINER_BEFORE_OBJECT_MOVE: sent to the owner of Visual Container before moving container's selected object.
      2. BCGM_CONTAINER_OBJECT_MOVED: sent to the owner of Visual Container when container's selected object has been moved.
    4. Visual Designer application additions:
      1. Multi-level Undo support.
      2. "Snap to grid" and grid style support.
    5. CBCGPTagCloud has a new attribute 'UnderlineHighlighted'; SetUnderlineHighlighted/IsUnderlineHighlighted access methods were added.
    6. CBCGPBaseTreeMapNode constructor has a new optional parameter 'DWORD_PTR dwUserData'.
  5. Dialogs and Forms
    1. Implemented ability to specify run-time class for the controls auto-subsclassing. A new static method CBCGPDlgImpl::SetSubclassControlRTI was added.
    2. SetControlInfoTip method of CBCGPDialog, CBCGPDialogBar, CBCGPPropertyPage and CBCGPFormView classes has new optional parameter 'ptOffset' which specifies info tip offset from the default position.
  6. Calendar and Planner
    1. By default the calendar bar uses the system locale to obtain a first day of week and first week of year.
    2. Now the planner built-in icons are automatically scaled according to current DPI.
  7. Hotspot image control
    1. Implemented item tooltips (see screenshot):
      • CBCGPHotSpotImageCtrl::AddHotSpot has 2 new optional parameters - lpszToolTip and lpszToolTipDescription.
      • Added new method CBCGPHotSpotImageCtrl::SetHotSpotToolTip which allows to modify item's tooltip dynamically.
    2. The control is DPI-aware now: a new optional parameter 'BOOL bDPIAutoScale' was added to CBCGPHotSpotImageCtrl constructor. When this parameter is TRUE, the background image and item locations are automatically scaled according to current DPI.
    3. CBCGPHotSpotImageCtrl::SetImage has a new optional parameter 'BOOL bKeepHotSpots'. Set this parameter to TRUE if you wish to change background image without deleting previously specified hotspots. HotSpotDemo sample demonstrates these New features:.
  8. Property Grid
    1. Added multi-line property support (see screenshot):
      • CBCGPProp class has a new virtual method 'GetRowsNumber'. Override it in CBCGPProp -derived class if you wish to implement your custom multi-row property.
      • New class CBCGPMultilineEditProp implements a multi-line text property. Take a look at BCGPControls example to see this feature in action.
    2. Implemented customization of CBCGPDateTimeProp appearance and behavior: the class constructor has a new optional parameter 'pAttributes' which has a pointer to new data structure CBCGPDateTimePropAttributes. You can customize a month appearance, date format, first day of week and date/time range.
    3. New method CBCGPPropList::EnableVerticalScrollBar allows to show/hide a vertical scroll bar.
  9. Miscellaneous
    1. CBCGPEditCtrl: implemented ability to show "White Space" characters such as Space or Tab (see screenshot). Call new method SetViewWhiteSpace to enable/disable "White Space" and IsViewWhiteSpace to check if this feature was enabled. Please run BCGPVisualStudioGUIDemo example to see this new feature in action.
    2. CBCGPButton::SetFaceColor has a new, optional parameter 'bMixFaceColorWithTheme'. If this parameter is FALSE, the color specified by developer is used in control background drawing; otherwise, this color will be "mixed" with a current theme-specific background.
    3. CBCGPCaptionBar::SetCaptionFont allows to display text using "caption" (large) font.
    4. A new method CBCGPContextMenuManager::SetRightMouseButtonCheck specifies whether message loop inside TrackPopupMenu should be stopped upon mouse right button click.
    5. A new virtual method CBCGPDockingControlBar::OnNewMDITabbedChildWnd allows to create a tabbed MDI child window with a custom class (derived from CBCGPMDIChildWnd).
    6. CBCGPDrawManager methods ColorMakeLighter and ColorMakeDarker have a new optional parameter 'bKeepSaturation'
    7. CBCGPEdit::EnablePopupDialog and CBCGPMenuButton::EnablePopupDialog methods have a new optional parameter 'BOOL bIsRightAligned = FALSE'. Set this parameter to TRUE if you wish to display the popup dialog on the control right side.
    8. CBCGPTextFormat has a new "End Ellipsis" attribute: SetEndEllipsis/IsEndEllipsis methods were added.
    9. CBCGPShellBreadcrumb has a new method Refresh. Call it to update the shell breadcrumb control content.
    10. CBCGPToolBarImages class has the following new methods:
      • InvertColors: inverts image colors
      • MakeLighter: makes the image lighter
      • MakeDarker: makes the image darker
  10. Examples and samples:
    1. TreeCtrlDemo: this new sample demonstrates how to use CBCGPTreeCtrlEx.
    2. BCGPControls: demonstrates a new multi-line property and Office 2016 Black theme.
    3. BCGPGridExample: demonstrates a new hierarchical grid features (see "Grid" -> "Tree Dialog" menu item) and improved color themes.
    4. BCGPMSOfficeDemo: demonstrates Office 2016 Black theme, Ribbon gallery controls in Combo mode and Backstage View property page auto-headers.
    5. BCGPVisualStudioGUIDemo: demonstrates edit "show white space", application state colors and Office 2016 Black theme.
    6. DiagramEditor: demonstrates container "snap to grid" feature.
    7. HotSpotDemo: demonstrates image DPI scaling and item tooltips.
    8. RibbonGadgets: demonstrates Ribbon gallery combo mode.
    9. RibbonStartPageDemo: illustrates how to create Office-like account control.
    10. TagCloudDemo: demonstrates "underline highlighted tag" feature.


  1. Fixed bug with a control background when parent window is embedded into the rebar pane.
  2. CBCGPComboBox: fixed some bugs with the item height calculation.
  3. CBCGPDurationCtrl: embedded spin control width is calculated according to current DPI now.
  4. CBCGPEdit: fixed bug with calculation of the browse button location when control has ES_MULTILINE style.
  5. CBCGPKeyMapDlg correctly restores previously saved position in the multi-monitor environment.
  6. CBCGPListBox: fixed bug with list box item height when pin items are enabled and current DPI is 200% or greater.
  7. CBCGPMDIFrameWnd doesn't receive unnecessary BCGM_ON_ACTIVATE_MDI_TEAR_OFF_FRAME message when user clicks "Close" button on inactive detached MDI frame.
  8. Fixed bug with unnecessary restoring/maximizing application frame window on startup or upon changing visual theme when the main frame is maximized.
  9. CBCGPPropertyPage correctly processes dynamic info tip mouse clicks when "DragClientArea" is enabled.
  10. CBCGPPropertySheet::RenamePage doesn't loss the icon associated with page in "List Box" mode.
  11. CBCGPRadialMenuObject correctly processes mouse double-click event now.
  12. CBCGPToolbarComboBoxButton: fixed bug with serialization user-defined data during button dragging in x64 bit mode.
  13. Grid control: a header supports HDF_BITMAP_ON_RIGHT align flag now. Fixed header alignment of a text label with a header image.
  14. Grid control: empty groups are now hidden if all content is filtered-out.
  15. The grid tooltip is displayed correctly now if control is located on the popup dialog.
  16. Grid control: fixed the minimal size of the Field Chooser window.

Version 24.4. Released 03/02/2016

New features:

  1. Ribbon Bar
    1. Implemented Office 2016-like Ribbon commands search ("Tell Me") (see screenshot). The following new methods were added to CBCGPRibbonBar class:
      • EnableCommandSearch: enables/disables the Ribbon commands search.
      • IsCommandSearchEnabled: tells whether the Ribbon commands search is enabled or not.
      • BCGM_ON_GET_RIBBON_COMMANDS_MENU_CUSTOM_ITEMS: this registered message allows adding custom menu items to the search results menu. Please take a look at BCGPMSOfficeDemo example to see this feature in action.
    2. Improved Ribbon controls layout and appearance in Office 2016 themes (see screenshot).
    3. Added ability to gray-out the Ribbon disabled icons (see screenshot). Call new method CBCGPRibbonBar::SetGrayDisabledImages to enable/disable this feature. BCGPMSOfficeDemo example illustrates this new feature.
    4. CBCGPRibbonBar::ActivateContextCategory allows specifying the context tab index: a new, optional parameter 'int nActiveTabIndex = 0' added.
    5. The Ribbon Main button can be enabled/disabled now: simply set the button's command ID and add MFC's command update handler associated with this ID.
    6. New method "CBCGPRibbonBar::GetQuickAccessDefaultState" allows obtaining a default QAT state.
    7. CBCGPRibbonBar::EnableKeyTips has a new optional parameter 'UINT nDelay = 200'. This parameter specifies a delay (in milliseconds) before displaying the Ribbon key tips.
    8. Added ability to specify a maximal zoom level: CBCGPRibbonBackstagePagePrint::SetMaxZoomLevelRibbon method was added.
    9. CBCGPRibbonCategory::SetHiddenElementRTC and CBCGPRibbonCategory::SetHiddenElementRTCByID methods allow to modify Ribbon category hidden elements class in runtime.
    10. CBCGPRibbonDialogBar constructor has a new, optional parameter 'CRuntimeClass* pRTI = NULL'. This is an underlined ribbon bar runtime class which should be derived from CBCGPRibbonBar or NULL.
  2. Dialogs and Forms
    1. Improved dialog info tips (see screenshot):
      • Added info tips style: Info, Error, Shield or Ok . The style is implemented in CBCGPControlInfoTip::BCGPControlInfoTipStyle.
      • The info tip can be clickable now: when it is clickable, the framework sends a new registered message BCGM_ONCLICKINFOTIP to the dialog/form. SetControlInfoTip method of CBCGPDialog, CBCGPDialogBar, CBCGPPropertyPage and CBCGPFormView class has 2 new optional parameters:
        • CBCGPControlInfoTip::BCGPControlInfoTipStyle style = CBCGPControlInfoTip::BCGPINFOTIP_Info: specifies info tip style
        • BOOL bIsClickable = FALSE: specifies whether info tip is clickable or not. Please take a look at EditBoxDemo sample to see this feature in action.
    2. CBCGPPropertyPage: added background image support (see screenshot). Call new method CBCGPPropertyPage::SetBackgroundImage to set/remove the background image. PropSheetDemo sample application demonstrates this new feature.
    3. CBCGPPropertySheet::EnableLayout has a new optional parameter 'BOOL bResizeBox = FALSE'. You can set this parameter to TRUE in order to display a resize box in the bottom-right corner of the property sheet.
    4. A Property Sheet list box uses a large font in some Visual Managers now.
    5. A new class CBCGPDHtmlDialog implements HTML dialog with themed (Visual Manager style) non-client area.
    6. CBCGPDialog::EnableLoadWindowPlacement and CBCGPPropertySheet::EnableLoadWindowPlacement have a new, optional parameter 'LPCTSTR szWindowPlacementProfile = NULL'. This parameter specifies a registry branch where window placement is saved.
    7. New virtual method CBCGPColorDialog::OnNewColorChanged is called by the framework when user changes color in the color dialog.
    8. BCGP_MSGBOXPARAMS has new members:
      • bHeaderWordBreak: specifies whether the header text is multi-line or not. The default value is TRUE.
      • bMessageWordBreak: specifies whether the message text is multi-line or not. The default value is TRUE.
    9. CBCGPProgressDlg::SetPos has a new, optional parameter 'BOOL bWaitForMessages = TRUE'. This parameter specifies whether the dialog should wait for the Windows messages.
  3. Docking panes
    1. A new method CBCGPDockingControlBar::SetTabCustomLabel sets a tab custom label. The custom label is used when control bar is docked as tabbed bar.
    2. A new global flag CBCGPDockingControlBar::m_bIgnoreRectOnShow. Set this member to TRUE if you wish to dock a previously hidden pane inside the current layout. By default, the previously hidden pane is docked with the recently saved size.
  4. Chart control
    1. Implemented new color themes: CT_FLAT_2016_1, CT_FLAT_2016_2, CT_FLAT_2016_3, CT_FLAT_2016_4 and CT_FLAT_2016_5 (see screenshot). You can see these new themes in BCGPChartExample application.
    2. CBCGPChartData::ComponentIndex has new values now:
      • CI_GROUP_VALUE: used in the Pie charts with small groups to display a total value of all "small" data points.
      • CI_GROUP_PERCENTAGE: used in the Pie charts with small groups to display a percentage of all "small" data points.
  5. Grid and Report controls
    1. Added user-defined values associated with a Grid item option: CBCGPGridItem::AddOption has a new optional parameter 'DWORD_PTR dwData' and new method 'CBCGPGridItem::GetOptionData' was added.
    2. New method CBCGPGridRow::InsertSubItem inserts a sub-item to the row at specific position. The inserted sub-item will be displayed on the next level of hierarchy before the specified sub-item.
    3. New virtual method CBCGPGridCtrl::GetRegSectionPath allows to customize the path in registry for the grid settings.
    4. New virtual method CBCGPGridCtrl::OnGetHeaderItemTextColor allows to customize text color for the header items in the grid control.
  6. Visual Manager additions
    1. The following new virtual methods were added to CBCGPVisualManager class:
      1. IsLargePropertySheetListFont
      2. GetGridHeaderItemTextColor
      3. GetOutOffFilterTextColor
      4. GetGridDragHeaderTextColor
      5. GetRibbonEditPromptColor
      6. GetRibbonQATButtonHorzMargin
      7. GetRibbonTabMargin
  7. Miscellaneous
    1. The product documentation is fully revised now: all help files are located at our new Help site: . You are still able to download .CHM files to read the documentation offline.
    2. When globalData.m_bUseVisualManagerInBuiltInDialogs is TRUE, BCGPMessage dialog (themed) is displayed instead of standard Windows message box.
    3. CBCGPEdit: added BrowseMode_PasswordPreview mode (see screenshot). Call new method CBCGPEdit::EnablePasswordPreview to enable/disable this mode. EditBoxDemo sample demonstrates this new edit box mode.
    4. Added new global font BCGPGLOBAL_DATA::fontHeader. This font can be used for drawing Office 2013/2016 backstage page headers.
    5. CBCGPCalendar: implemented a first week of year behavior. A developer can specify now what a first week of year is: week of Jan 1, first full week or first week containing at least four days in the first week of the year. CBCGPCalendar::SetFirstWeekOfYear method was added.
    6. New method globalUtils.GetIconSize returns an icon dimensions.
    7. CBCGPDateTimeCtrl::SetEmptyDateLabel allows to display some text label when date/time picker is unchecked.
    8. A global method BCGPPrintPreview has a new, optional parameter 'CRuntimeClass* pRTI = NULL'. This is a custom runtime class; it should be derived from CBCGPPrintPreviewView.
    9. CBCGPProp::ShowMenuButton shows/hides a menu button of specific property grid item.
    10. CBCGPRotationObject::EnableFlatIcons enables/disables rotation menu flat icons (see screenshot).
    11. New method 'CBCGPTabView::GetView' returns a view by specified index.
    12. CBCGPTasksPane and CBCGPToolBoxEx classes: added Microsoft Active Accessibility support.
    13. CBCGPToolBoxPage: added user-defined values associated with toolbox buttons: CBCGPToolBoxPage::SetButtonUserData and CBCGPToolBoxPage::GetButtonUserData methods were added.
    14. New method 'CBCGPVisualContainer::RemoveSelected' removes currently selected objects from the visual container.
  8. Examples and samples:
    1. BCGPChartExample: illustrates new color themes and rotation control with flat icons.
    2. BCGPControls: demonstrates unchecked date/time label and calendar's first week of year.
    3. BCGPGridExample: demonstrates a custom color list grid item (see screenshot) and 2 buttons custom grid item.
    4. BCGPMSOfficeDemo: demonstrates commands search (Office 2016-like "Tell Me").
    5. EditBoxDemo: demonstrates improved control info tips and password preview mode.
    6. PropSheetDemo: demonstrates how to add a custom background image to the property page client area.
    7. ResizableForm: property sheet resize box.
    8. XMLSettings: uses CBCGPTagManager now.


  1. Fixed bug with a dialog box appearance: sometimes, only a dialog shadow was displayed instead of the whole dialog box.
  2. CBCGPButton: fixed redrawing bug when control receives the focus.
  3. CBCGPCalculator::UpdateBuffer correctly parses an empty buffer now.
  4. CBCGPPieChartImpl: fixed 3D pie/doughnut rendering bug in some pie angles.
  5. CBCGPPieChartImpl: improved data labels positions calculation.
  6. CBCGPChartInterLineColoringEffect: fixed some problems caused by "asynchrony" (with different start and end positions) series.
  7. CBCGPChartInterLineColoringEffect: improved polar chart rendering.
  8. CBCGPCircularGaugeImpl::HitTestValue correctly processes reversed scale (where start is greater than finish) now.
  9. CBCGPDiagramShape::OnDraw renders elliptical shape using Thickness property now.
  10. CBCGPLinearGaugeImpl: fixed some bugs with reversed (where start is greater than finish) scales.
  11. CBCGPDockingControlBar::CalcGripperHeight correctly calculates the docking pane height in case of large caption buttons (e.g, Windows 10, high DPI mode).
  12. CBCGPEdit: fixed bug with changing control mode before window creating (e.g, in the parent dialog constructor).
  13. CBCGPEditCtrl: a mouse wheel message is passed to the active IntelliSense window now.
  14. CBCGPEditCtrl: shift + left mouse click correctly changes the selection range now.
  15. CBCGPGlobalUtils::GetSystemBorders returns a correct border size for the dialog boxes and MDI child windows.
  16. CBCGPColor::MakeLighter, CBCGPColor::MakeDarker and CBCGPColor::MakePale methods are working correctly now when alpha value is not 1.0 (the color has an alpha channel).
  17. Grid control: fixed some bugs with in-place edit/browse button location in case of the merged cells.
  18. Grid control: fixed some color issues in the various visual managers.
  19. CBCGPListBox: fixed bug with check box/radio button/color bar size in some screen resolutions.
  20. CBCGPMDIFrameWnd::OnDrawMenuImage draws a correct Ribbon bar icon when MDI frame is detached (in tear-off mode).
  21. CBCGPMessageBox: fixed bug with a minimal window width calculation.
  22. CBCGPPopupMenu: fixed bug with drawing menu shadow during animation when menu is right-aligned.
  23. CBCGPRibbonBar::DrawMenuImage doesn't draw a simplified (used in Office 2016 dark/colorful themes) icon now.
  24. CBCGPRibbonBar: a QAT customization button cannot be added to QAT now.
  25. Ribbon customization dialog: clicking "Reset" button immediately changes the Ribbon layout to the default, as in MS Office applications.
  26. CBCGPToolBar::UpdateTooltips correctly deletes old tooltips now.
  27. CBCGPToolbarComboBoxButton: resolve problem with toolbar combo box height in some layouts.

Version 24.3. Released 10/15/2015

New features:

  1. Office 2016-style Visual Themes were adapted to Office 2016 final release (see screenshot).
  2. Ribbon Bar
    1. Added custom controls large icons support: CBCGPRibbonCustomizationOptions has 2 new members:
      • m_strCustomLargeImagesPath: path to image list with large (32x32) custom icons. This list should have the same image set as small (16x16, specified by m_strCustomImagesPath member).
      • m_bAlwaysShowSmallIcons: set it to TRUE if you wish to always use small icons only (as in previous product versions).
    2. Ribbon customization improvements:
      1. Added tooltips to the Ribbon Customization tree (see screenshot).
      2. Image picker in "Rename" dialog has visual manager-style look and better keyboard/mouse navigation (see screenshot).
      3. Method CBCGPRibbonBar::ApplyCustomizationData is virtual now.
    3. Developer can specify Ribbon tab and Quick Access Toolbar icons style now: call new methods CBCGPRibbonBar::SetTabIconsStyle and CBCGPRibbonBar:SetQuickAccessIconsStyle to modify icons appearance. The style can be one of the following:
      • BCGPRibbonIconStyle_Default: specified by Visual Manager.
      • BCGPRibbonIconStyle_Original: original (unchanged) icon.
      • BCGPRibbonIconStyle_Simplified: simplified (white) icon.
    4. Ribbon Gallery: you can assign key tips to individual gallery icons now. New methods 'SetItemKeys' and 'GetItemKeys' were added to CBCGPRibbonPaletteButton class.
  3. Improved MDI tabbed groups:
    1. Added multiple selection of MDI child windows (see screenshot). A new 'm_bTabMultipleSelection" member was added to CBCGPMDITabParams structure - set it to TRUE to activate this feature. After selecting of multiple tabs, you can save or close all windows at once, move them to other tabs groups or move outside the hosting frame and create a new MDI tear-off frame. BCGPVisualStudioGUIDemo example demonstrates this new feature.
    2. New method 'CBCGPMDIFrameWnd::GetSelectedMDIChildren' returns currently selected MDI child frames.
  4. Implemented Office-style dialog control information tips (see screenshot). Each control located on the form can be associated with right-side located small info mark. When user hovers the mouse cursor over this info mark, the screen tip with control description will appear. The following new methods were added to CBCGPDialog, CBCGPPropertyPage, CBCGPFormView and CBCGPDialogBar classes:
    • SetControlInfoTip: add information to the dialog control.
    • GetInfoTipControl: get dialog control with currently active info tip. Please take a look at BCGPMSOfficeDemo example ("Options" pages) and EditBoxDemo/TaskBarDemo samples to see this new feature in action.
  5. Grid and Report controls
    1. Added tri-state checkbox support. To enable it, please call new method CBCGPGridCheckItem::Enable3StateCheckBox.
    2. Improved accessibility support: set new member CBCGPGridCtrl::m_bAccGridItemValueAsName to TRUE to make the Grid work with screen readers (such as Narrator) more correct.
  6. Visual Manager additions
    1. CBCGPWinApp::AddVisualTheme and CBCGPWinApp::SetVisualTheme methods have new, optional parameter 'CRuntimeClass* pRTICustom = NULL'. If you wish to specify your custom visual manager, simply derive your custom class from corresponding CBCGPVisualManager-derived class and pass its runtime info to one of the mentioned methods. When a specific visual theme is activated, your custom class object is automatically created by the framework.
    2. The following new virtual methods were added to CBCGPVisualManager class:
      1. GetPopupWindowBorderBorderColor
      2. OnDrawRibbonDropDownPanel
      3. OnFillRibbonQAT
      4. OnDrawRibbonColorPaletteBoxHotBorder
      5. OnDrawControlInfoTip
  7. Tasks pane and Toolbox
    1. Implemented toolbox items filtering (see screenshot). The following new methods were added to CBCGPToolBoxEx class:
      • EnableSearchBox: show/hide the search box.
      • IsSearchBox: returns TRUE if filter box is specified; FALSE - otherwise.
      • GetFilterText: returns the filter box text.
    2. Added header control (see screenshot). New CBCGPTasksPane::m_wndHeader member was added.
    3. Tasks pane group can be temporary hidden now: added CBCGPTasksGroup::m_bIsVisible flag.
    4. Page changing animation is based on the system animation (Windows Vista or higher).
  8. Miscellaneous
    1. Combo box:
      1. Implemented new class CBCGPColorComboBox (see screenshot). The list may include either standard, system or user-defined colors. Please take a look at ComboBoxDemo sample to see this new control in action.
      2. Implemented combo box auto-complete for control with CBS_DROPDOWN style (see screenshot). New methods 'EnableAutoComplete' and 'IsAutoCompleteEnabled' were added to CBCGPComboBox class. ComboBoxDemo sample demonstrates this new feature.
      3. Added CBS_SIMPLE style support (see screenshot).
    2. Tab control: added tabs multiple selection support (see screenshot). You can use this feature when tab control has 3D, Flat or Dots style only. The API additions are:
      1. The following new methods were added to CBCGPBaseTabWnd class:
        • EnableMultipleSelection: call this method to enable/disable tabs multiple selection.
        • GetSelectedTabsCount: returns number of selected tabs.
        • GetSelectedTabs: gets selected tabs list.
        • ClearSelectedTabs: clears tabs sections.
        • IsTabSelected: returns TRUE if tab is selected or FALSE otherwise.
        • ToggleTabSelectState: toggles selection state of specific tab.
      2. New notification message BCGM_CHANGE_TAB_SELECTION is fired when tabs selection is being changed. Please take a look at TabControl sample to see this feature in action.
    3. Desktop Alert (Popup) window has an optional stem now (see screenshot). In addition, this new look can be applied to any visual control such as Charts, Gauges and others (see screenshot). CBCGPInfoTipOptions structure has 2 new members:
      • m_StemLocation: stem location.
      • m_nStemSize: stem size (in pixels). Please take a look at BCGPChartExample and PopupDemo demonstration programs to see this new feature in action.
    4. Advanced Edit control: New option for outline parser. You may use new "OneLine" tag for outline block. This change fixes some bugs in Outline parser. Please see updated example BCGPVisualStudioGUIDemo.
    5. Breadcrumb control: implemented menu icons drawing (see screenshot). Added new method 'CBCGPBreadcrumb::OnDrawMenuImage'. By default, this method draws a menu icon associated with corresponding breadcrumb item, but you can override it for drawing custom menu icons.
    6. CBCGPButton: added new member 'BOOL m_bNotifyCommandOnDblClick'. Set it to FALSE if you wish to prevent BN_CLICKED command notification upon mouse double-click.
    7. CBCGPCalendar: added new virtual method 'NotifyCloseCalendar'. Override this method if you wish to add some actions when user chooses date or clicks outside the calendar window.
    8. Added new global variable CBCGPToolbarComboBoxButton::m_bIsDropListVisualManagerTheme. Set it to FALSE if you wish to get rid of toolbar combobox drop-down list theming.
  9. Examples and samples:
    1. New sample ComboBoxDemo (see screenshot) demonstrates various combo box features.
    2. BCGPChartExample: illustrates new style info tips.
    3. BCGPControls: demonstrates how to use CBCGPColorComboBox new class and Breadcrumb controls with menu icons.
    4. BCGPMSOfficeDemo: demonstrates improved Office 2016-like theme and new controls info tips.
    5. BCGPVisualStudioGUIDemo: demonstrates toolbox filtering, MDI tabs multiple selection and improved editor outlining.
    6. EditBoxDemo: added control info tips.
    7. PopupDemo: demonstrates how to create a popup with optional stem.
    8. TabControl: illustrates tabs multiple selection.
    9. TasksPane: added tasks pane header control demonstration.
    10. ToolBoxDemo: demonstrates how to use a new Search Box.


  1. Resolved some build problems when developer uncomments BCGP_EXCLUDE_* define(s).
  2. Docking panes: when a floating pane is attached to the tabbed bar, the window doesn't become temporary hidden now.
  3. Tab control: fixed some bugs with removing tabs when "New Tab" is specified.
  4. Color button: fixed bug with color popup appearance in RTL mode.
  5. Combo box: fixed some bugs in RTL mode.
  6. Combo box: fixed bug with unwanted closing dropdown list when user clicks the scrollbar (in some visual themes).
  7. A minimized modeless dialog is correctly rendered now.
  8. A minimized MDI frame doesn't "eat" now keyboard accelerators when MDI tear-off window is active.
  9. Windows 10: the Ribbon caption buttons have a correct size now.
  10. Ribbon Bar in Office 2016 Dark theme: fixed bug with drawing some icons on the customization pages.
  11. Ribbon Bar: fixed wide panels scrolling bug.
  12. Ribbon bar: improved layout of the vertically-centered controls.
  13. CBCGPStatic control supports SS_CENTERIMAGE style now.
  14. CBCGPListBox::DeleteItem correctly deletes list box item if LBS_OWNERDRAW* is not specified.
  15. Grid control: fixed some drawing problems in right-aligned grid cells.
  16. Advanced Edit control: fixed some minor problems in control vertical scrolling.

Version 24.2. Released 08/03/2015

New features:

  1. The product is fully compatible with a final version of Windows 10 (see screenshot)! All product functionalities were thoroughly tested under latest release and all test cases are passed.
  2. Visual Studio 2015 full support is available now: Integration Wizard builds required DLLs and libraries for usage in VS 2015, Application Wizard allows creating Visual Studio-like and Office-style applications in seconds and all our examples/samples where tested with the new Visual Studio.
  3. Office 2016-style Visual Themes are available now (see screenshot). A new class CBCGPVisualManager2016 implements the following visual styles:
    • Colorful theme (see screenshot). The application frame and Ribbon bar top area are rendered using the accent color.
    • Dark gray theme (see screenshot). The most application colors are dark gray and accent color is being used very rarely.
    • White theme (see screenshot). This theme is very similar to Office 2013 white theme.
    These new styles were added to BCGP_VISUAL_THEME enumeration:
    • BCGP_VISUAL_THEME_OFFICE_2016_WHITE. In the Colorful and Dark Gray themes, icons of controls located on the Ribbon QAT or Ribbon tabs area are automatically converted to the simplified (white) icons (see screenshot). Please take a look at BCGPMSOfficeDemo, BCGPOrganizer, BCGPGridExample and BCGPVisualStudioGUIDemo examples to see this new visual theme. Disclaimer: since this visual theme is based on Office 2016 Preview look, the appearance can be changed after Office 2016 release.
  4. Ribbon Bar
    1. CBCGPRibbonBar::SetBackstageMode has a new optional parameter 'BOOL bDisplayCommandIcons'. Set it to FALSE if you don't wish to display an icon left of backstage command (as in Office 2013/2016 applications, see screenshot).
    2. Added option don't close the parent menu after clicking the Ribbon control. Call a new method 'CBCGPRibbonButton::SetDontCloseParentPopupOnClick' to specify the button behavior.
    3. CBCGPRibbonFloaty::ShowWithContextMenu(int x, int y, HMENU hMenu, CWnd* pWndOwner, BOOL bAutoDestroyMenu) allows to display the mini-toolbar with dynamically-created menu.
    4. Extended Ribbon gallery icon tooltip format: added ability to specify tooltip, description and label in one resource string: <tooltip>\n<description>\n<label>.
    5. Ribbon Designer additions:
      • Added support for the new, Office 2016-style themes.
      • Added support for the extended gallery tooltips.
      • 'DontCloseParentPopupOnClick" property was added to the Ribbon buttons.
  5. Planner and Calendar controls
    1. Implemented MS Office 2013/2016-style look (see screenshot).
    2. The planner elements rendering is more flexible now. We've added the following flags for the calendar drawing customization:
      • BCGP_PLANNER_DRAW_APP_NO_SHADOW: don't draw an appointment shadow.
      • BCGP_PLANNER_DRAW_APP_NO_BORDER: don't draw an appointment border.
      • BCGP_PLANNER_DRAW_APP_DEFAULT_BKGND: use a default control background color for the drawing.
      • BCGP_PLANNER_DRAW_APP_DURATION_MULTIDAY: display duration on the multi-day elements.
      • BCGP_PLANNER_DRAW_APP_DURATION_WEEK_MONTH: display duration on the elements located in the Week or Month view.
      • BCGP_PLANNER_DRAW_VIEW_CAPTION_DAY_BOLD_FC: use the bold font for drawing a day caption.
      • BCGP_PLANNER_DRAW_VIEW_CAPTION_DAY_EXTENDED: use the large font for drawing a day caption.
      • BCGP_PLANNER_DRAW_VIEW_CAPTION_DAY_UPPER: draw day caption in the uppercase.
      • BCGP_PLANNER_DRAW_VIEW_HEADER_BOLD: use the bold for for drawing a control header.
      • BCGP_PLANNER_DRAW_VIEW_HEADER_BOLD_CUR: use the bold font for drawing a control header (current day only).
      • BCGP_PLANNER_DRAW_VIEW_HEADER_EXTENDED: use the large font for drawing a control header.
      • BCGP_PLANNER_DRAW_VIEW_HEADER_UPPER: draw control header in the uppercase.
      • BCGP_PLANNER_DRAW_VIEW_TIME_BAR_NO_MINUTS: draw the time bars without minutes.
      • BCGP_PLANNER_DRAW_VIEW_TIMELINE_FULL_WIDTH: timeline occupies the full width of the planner.
  6. Grid and Report controls
    1. The empty grid (when no items were added or all rows are filtered-out according to the current state) can display a special text now (see screenshot). The following new methods were added to CBCGPGridCtrl class:
      • SetNoContentLabel: specifies "no content" text.
      • GetNoContentLabel: returns "no content" text.
      • IsEmpty: returns TRUE if grid is empty and FALSE otherwise
      • SetOutOfFilterLabel: specifies "out of filter" text.
      • GetOutOfFilterLabel: returns "out of filter" text. Please take a look at BCGPGridExample to see this feature in action.
    2. New method CBCGPGridCtrl::GetColumnSortingPriority returns columns order in the multiple columns sorting mode.
    3. New method SetExportRangeSkipList allows to customize exporting to CSV and exporting to HTML features.
    4. CBCGPGridCtrl::SetVisualManagerColorTheme has a new optional parameter 'bAutoUpdateOnVMChange = TRUE'. Setting it to FALSE saves the user custom color theme when the Visual Manager is changed.
    5. CBCGPGridCheckItem may draw both an image and a check box now.
    6. Improved appearance of the built-in "Filter" dialog pane.
  7. Visual Manager additions
    1. GetPopupMenuBackgroundColor returns a popup menu background color.
    2. GetDlgTextColor returns a text color of the dialog window.
    3. OnDrawRibbonMainButtonLabel draws a Ribbon Main (Application) button label.
    4. GetRibbonCaptionTextColor returns a Ribbon caption text color.
  8. Controls
    1. Property Grid control:
      • New class CBCGPBitwiseProp implements bitwise property (see screenshot). Use this type of property if you need to specify some object flags such as window style(s).
      • New method CBCGPPropList::GetListDelimiter returns a delimiter character.
    2. CBCGPButton: added support for the drawing non-focused, default push button.
  9. Miscellaneous
    1. The internal product icons were updated in order to match the modern look (see screenshot).
    2. New methods CBCGPWorkspace::LoadDockingLayout and CBCGPWinApp::SaveDockingLayout provide easy way to save/load the docking panes layout.
    3. CBCGPGestureBase: added OnGestureEventBegin and OnGestureEventEnd virtual methods.
    4. CBCGPTextFormat: added SetFontWeight method.
    5. New registered message BCGM_ON_ACTIVATE_MDI_TEAR_OFF_FRAME allows to catch MDI tear-off child frame activation/deactivation.
    6. The "Windows" dialog is optionally resizable now. CBCGPMDIFrameWnd::EnableWindowsDialog and CBCGPWindowsManagerDlg constructor have a new parameter "BOOL bResizable = FALSE".
    7. CBCGPMessageBox: the content layout of the message box with header has been improved in this version.
    8. New method 'CBCGPOutlookWnd::EnableToolbarCustomizeButton' allows to show/hide a customization ("chevron") button in Outlook toolbar.
    9. New global variable 'CBCGPSlider::m_nMinPaneSize' specifies the minimum docking pane width/height (default is 25). When the docking pane is being resized, it cannot be smaller than this value.
    10. Added method 'CBCGPToolBarImages::ExtractBitmap'
    11. New method 'CBCGPToolBarImages::Simplify()' converts image to the colorless, light image.
  10. Examples and samples:
    1. BCGPMSOfficeDemo: illustrates new Office 2016-like themes and Office 2013/2016-style backstage view.
    2. BCGPVisualStudioGUIDemo: added Office 2016-like themes and resizable "Windows..." dialog.
    3. BCGPGridExample: new visual themes and filtering.
    4. BCGPCalendarDemo: illustrates new Office 2013/2016-style calendar.
    5. BCGPControls: demonstrates how to use CBCGPBitwiseProp new class.
    6. BCGPVisualStudioGUIDemo: demonstrates how to reset default docking panes layout (menu item "Window | Reset Window Layout").


  1. MDI tear-off windows: the following MDI tabs notification messages are sending now to the main application frame: BCGM_CHANGE_ACTIVE_TAB, BCGM_CHANGING_ACTIVE_TAB, BCGM_NEW_TAB and BCGM_ON_GET_TAB_TOOLTIP.
  2. Fixed bug with displaying CBCGPCalculatorPopup windows when the system menu animation is disabled.
  3. CBCGPCalendar correctly shows dates range if SetMinDate/SetMaxDate methods were called for this control or date/time picker.
  4. CBCGPCaptionBar: fixed some rendering bugs in high DPI.
  5. Fixed bug with hiding dialog shadow in CBCGPDlgImpl::OnActivate method.
  6. Dialogs and Frames with owner-draw caption: the caption height is calculated correctly now if the window has WS_EX_TOOLWINDOW style.
  7. Outlook options dialog cannot be closed now if user unchecks all panes.
  8. Popup menu is sending WM_INITMENUPOPUP message with a correct LPARAM now.
  9. MDI tabs: if developers overrides CBCGPMDIChildWnd::GetFrameIcon, the correct icon is displayed in the tab now.
  10. MDI Tabbed Groups: fixed bug with saving and restoring custom objects.
  11. 3D Surface Chart: fixed some rendering bugs.
  12. Linear Gauge: fixed some problems with drawing scales in case of the small ranges and steps.
  13. Grid control: fixed some rendering bugs in high DPI.
  14. Grid control: fixed bug with auto-complete cell using keyboard.
  15. Ribbon Customization page: fixed bug with appearance of the tree control in some visual styles.

Version 24.1. Released 04/20/2015

New features:

  1. The product is fully compatible with a latest version of Windows 10 Technical Preview (see screenshot):all product functionalities were thoroughly tested under latest release and all test cases are passed.
  2. Added Visual Studio 2015 Technical Preview project files (the integration with VS 2015 environment will be added later, after VS 2015 release).
  3. Ribbon Bar
    1. Implemented MS Office 2013-like Start Page support (see screenshot):
      • Call new method 'CBCGPRibbonBar::EnableStartPage' to specify the start page properties such as dialog resource ID and dialog class (derived from CBCGPDialog).
      • CBCGPRibbonBar:ShowStartPage shows the start page.
      • Override CBCGPDialog::GetRibbonStartPageLeftPaneWidth method to specify width of the left-side bar. Please take a look at new RibbonStartPageDemo sample to see this feature in action.
    2. Added new class 'CBCGPNewDocumentGalleryCtrl' (see screenshot). This control displays list of built-in and custom templates and can be used in the Ribbon Start page or in "New" backstage view.
    3. CBCGPRibbonPaletteButton::ShowSelectedImage allows displaying a currently selected item's image instead of the default (see screenshot).
    4. CBCGPRibbonPaletteButton: added gallery items text label support (see screenshot): call a new method 'EnableItemTextLabels' to enable/disable labels, specify text location inside item (top/bottom/center) and text color.
    5. CBCGPRibbonColorButton::SetColors allows adding color list from the array.
    6. CBCGPRibbonGalleryCtrl has the following new attributes:
      • SetNotifyBySingleClick
      • SetDrawSelectionAlways
  4. Grid and Report controls
    1. Added export to CSV (Comma Separated Value format). This functionality provides an easy way to export grid data to any external data sheets such as MS Excel (see screenshot). The following new methods were added to CBCGPGridCtrl class:
      • ExportToCSV: copy grid data to text buffer in CSV format
      • CopyCSV: copy grid data to the clipboard in CSV format Please take a look at BCGPGridExample to see this feature in action.
    2. Improved export to HTML format: added ability to export text color and background color of the cells. To use this functionality you've to add new flags 'EF_IncludeTextColor | EF_IncludeBackgroundColor' to 'dwFlags' parameter of ExportRangeToHTML and ExportToHTML methods.
    3. New method CBCGPGridCtrl::SetColumnSortingPriority specifies columns order in the multiple columns sorting mode.
    4. Added BCGM_CHANGEVISUALMANAGER message handler: the Grid color theme is automatically updated now upon application theme changing.
  5. Visual container and objects
    1. Implemented auto-scroll when selected container object is being dragged.
    2. CBCGPVisualScrollBar: added BCGP_VISUAL_SCROLLBAR_VISUAL_MANAGER style (see screenshot).
  6. Dialogs
    1. Implemented expandable areas (see screenshot).Simply add a new check box specifying start of the expandable area (this check box will be automatically converted to "Expand/Collapse" button) and call new CBCGPDialog method 'EnableExpand'. Also, the following new methods were added to CBCGPDialog class:
      • Expand: expand/collapse the expandable area
      • IsExpanded: returns TRUE if expandable area is expanded; FALSE - otherwise
      • SetExpandAreaSpecialBackground: specifies if expandable area will be drawn with shaded background or not. Please take a look at new sample 'ExpandDialogDemo' to see this feature in action. Important: this feature cannot be used along with resizable dialogs or property sheets.
    2. BCGPMessageBox:
      • Buttons custom font support: hfontButtons member was added to BCGP_MSGBOXPARAMS structure.
      • TaskDialog-like header (see screenshot): lpszHeader member wad added to BCGP_MSGBOXPARAMS Please take a look at MessageBoxDemo sample to see these features in action.
  7. Miscellaneous
    1. Added build-in images for DPI 200%.
    2. New class CBCGPMDITemplatesListBox shows list of MDI document templates (see screenshot). This control can be used as replacement of the standard MFC "New" dialog (see BCGPVisualStudioGUIDemo and MDIEditorDemo).
    3. MDI Client area themed scrollbars: BCGP_THEMED_SCROLLBAR_MDICLIENT was added.
    4. Docking panes: the docking pane preserves its size when user makes it floating by mouse. If you wish to keep an old behavior, please set CBCGPDockManager::m_bKeepBarSizeOnFloating (global variable) to FALSE.
    5. CBCGPButton and CBCGPURLLinkButton controls are "touch-friendly" now:
      1. Check box/radio button size is scaled according to control font size.
      2. The underlined text has the same size as regular.
    6. New method 'CBCGPDrawManager::DrawCheckMark' draws a check mark inside the given box.
    7. CBCGPEdit: added ability to disable right-side button in read-only mode. The following methods were added:
      1. SetDisableBrowseButtonInReadOnlyMode
      2. IsDisableBrowseButtonInReadOnlyMode
      3. IsBrowseButtonEnabled (virtual)
    8. CBCGPListBox: new virtual method 'OnFillItem' allows changing specific item background.
    9. CBCGPOutlookBar::SetDrawActiveTabNameOnCaption enables/disables displaying active tab name on the pane's caption.
  8. Examples and samples:
    1. Added new sample ExpandDialogDemo (see screenshot): illustrates how to add expandable area to the dialog box.
    2. Added new sample RibbonStartPageDemo (see screenshot): illustrates Ribbon Start Page.
    3. BCGPVisualStudioGUIDemo and MDIEditorDemo: shows how to replace a standard MFC "New Document" dialog with a custom.
    4. BCGPGridExample: demonstrates how to export grid data to CSV format.
    5. MessageBoxDemo: demonstrates message header and buttons custom font.
    6. PropertyGridMDIDemo: demonstrates how to associate a property grid located in the main frame with detached MDI child.
    7. RibbonGadgets: demonstrates gallery button with selected icon.
    8. RibbonMDIDemo: demonstrates how to associate a ribbon context tab with objects located inside detached MDI child.


  1. Fixed some "#pragma warning" incorrect usages appeared in version 24.0.
  2. CBCGPListBox: fixed bug with adding strings to non-owner-draw control.
  3. CBCGPMDIFrameWnd calls OnShowPopupMenu for the active tear-off MDI frame now.
  4. CBCGPPropertySheet: fixed bug with adding pages group caption in the list mode.
  5. CBCGPRibbonPanelMenuBar: hide highlighted item tooltip when panel is being scrolled.
  6. CBCGPStatic correctly displays icon on the "aero" background.
  7. CBCGPTextGaugeImpl: fixed problem with "ticker" mode in GDI graphics manager (Windows XP).
  8. CBCGPURLLinkButton: fixed bug with displaying control on the "aero" background.
  9. A minimized tear-off MDI frame will be automatically restored when user choose one of its child windows in Windows dialog or navigator.
  10. CBCGPGridCtrl::OnHeaderColumnRClick is always called now when user clicks a grid header by the mouse right button.
  11. Fixed memory leak in CBCGPGridCtrl::DoSetSelection (it was in case of multiple selection),
  12. CBCGPGridCtrl::ShowDragInsertMarker works correctly now when user drop some content into the empty grid.

Version 24.0. Released 03/05/2015

New features:

  1. Tear-off MDI child windows support (see screenshot). This feature is similar to Visual Studio 2013 or Internet Explorer: simply click the MDI tab and drag it outside the main application window. You'll see a new frame with a single MDI document. To enable/disable this new feature simply call EnableTearOffMDIChildren in your CMainFrame class OnCreate. Please take a look at BCGPVisualStudioGUIDemo example application to see this feature in action. Important: this feature is available only if you enabled MDI tabbed groups.
  2. Internal window scrollbars theming support (see screenshot). The currently activated Visual Manager theme can be applied to any internal scrollbar now. The following controls are supported "out of the box":
    • Tree control
    • List view
    • List box
    • Edit box
    • Combo box
    • MFC form view and scroll view In addition, you can easily add scroll bars theme support to any CWnd-derived classes. To enable/disable this feature, simply change globalData.m_nThemedScrollBars in your application class constructor.
  3. Visual Manager support in CBCGPToolbarCustomize dialog (see screenshot). If globalData.m_bUseVisualManagerInBuiltInDialogs is TRUE, the toolbar customization dialog will be themed by default now.
  4. Ribbon Bar
    1. Improved custom font support (see screenshot): when you call CBCGPRibbonBar::SetFont, all ribbon elements such as panels, controls, key tips or menus will automatically update their font. Please take a look at RibbonGadgets sample to see this feature in action.
    2. You can add separators to the Backstage View now (see screenshot).
    3. CBCGPBaseRibbonElement has a new virtual method 'OnChangeRibbonFont'. Override this method if you need to perform some action upon Ribbon font changing.
    4. Backstage View group labels have visual manager-dependable text colors: new virtual method 'GetRibbonBackstageInfoTextColor' was added to CBCGPVisualManager class.
    5. New method CBCGPRecentFilesListBox::FillList(const CStringArray& arRecent, const CStringArray& arPinned, LPCTSTR lpszSelectedPath = NULL) allows to add custom items (such as cloud documents) to the recent files list.
    6. CBCGPRibbonCaptionCustomButton: new virtual method 'OnAdjustWidth' allows changing the button width.
    7. Ribbon combo box: added keyboard navigation support for the dropdown list.
  5. Chart Control
    1. Added new themes: CT_FLAT_2015_1, CT_FLAT_2015_2, CT_FLAT_2015_3, CT_FLAT_2015_4 and CT_FLAT_2015_5 (see screenshot).
    2. Implemented new chart category BCGPChartDoughnutNested (see screenshot).
    3. Implemented automatic default font scaling according to DPI settings. If you wish to disable this feature, set new global member 'BCGPChartFormatLabel::m_bDefaultFontIsScaledByDPI' to FALSE.
  6. List Box
    1. Item color bar support (see screenshot): SetItemColorBar and GetItemBarColor methods were added.
    2. Item custom icons: new methods SetItemIcon and GetItemIcon were added.
    3. Added ability to specify the custom items height: SetItemExtraHeight/GetItemExtraHeight were added.
    4. The following new virtual methods allow to customize the control appearance:
      • OnFillBackground
      • OnDrawItemDescription
      • OnDrawItemColorBar
  7. Miscellaneous
    1. Planner control: extended monthly view week bar support (see screenshot). The following week bar types were added:
      • Days: shows week dates
      • Numbers: shows week numbers
      • Custom Call new method 'CBCGPPlannerManagerCtrl::SetWeekBarType' to specify the week bar type. You've to override CBCGPPlannerManagerCtrl::GetWeekBarText method to specify the custom week bar label. Please take a look at BCGPCalendarDemo example to see this feature in action.
    2. Edit control IntelliSense window is themed now (see screenshot). GetIntelliSenseFillColor and GetIntelliSenseTextColor virtual methods were added to CBCGPVisualManager class.
    3. Added globalData.GetComboBoxInfo method (wraps SDK GetComboBoxInfo).
    4. CBCGPCaptionBar: added MSAA support.
    5. CBCGPComboBox's drop list is themed now (see screenshot).
    6. Implemented state restore of the maximized floating panes. CBCGPFrameWnd | CBCGPMDIFrameWnd::EnableMaximizeFloatingBars has a new optional parameter 'BOOL bRestoreMaximizeFloatingBars = FALSE'.
    7. Improved image scaling algorithm.
    8. CBCGPStaticLayout::RemoveAnchor method was added.
    9. New method CBCGPCheckListBox::EnableCheck allows to enable/disable check box of the specific checked list item.
    10. Improved appearance of CBCGPPrintPreviewCtrl control: in the "modern" visual managers such as Office 2013 or Visual Studio 2013 it doesn't have a shadow around the frame. In addition, the internal window scrollbar is themed now.
    11. New method CBCGPPropertyPage::SetPageIcon(HICON hIcon) assigns the icon to specific property page.
    12. CBCGPSwitchImpl: added disable control support.
    13. CBCGPToolBoxPage: improved high-DPI image scaling.
    14. CBCGPToolTipParams has a new member 'HICON m_hiconHelp'. Specify this member if you wish to draw icon along with the tooltip "help" text.
    15. CBCGPWinUITiles: added icons auto-scaling by DPI. Call new method CBCGPWinUITiles::EnableIconsScaleByDPI to enable/disable this feature.
    16. CBCGPGridDateTimeItem now supports seconds (CBCGPDateTimeCtrl::DTM_SECONDS flag is used).
  8. Examples and samples:
    1. Added new sample EditorMarkers (see screenshot): illustrates how to add custom markers and colored areas to the edit control.
    2. BCGPVisualStudioGUIDemo: MDI tear-off tabs.
    3. BCGPCalendarDemo: demonstrates monthly view week bar.
    4. BCGPChartExample: demonstrates new color themes and nested doughnut chart.
    5. BCGPControls: demonstrates custom hex value property.
    6. Wordpad: added ruler zoom demonstration.
    7. ListBoxDemo: shows how to add color bars and disable check boxes.
    8. RibbonGadgets: demonstrates Ribbon custom fonts.
    9. WinUITilesDemo: shows icons auto-scaling.


  1. CBCGPButton: fixed check box/radio button rendering bug in high DPI mode.
  2. CBCGPButton::get_accState returns correct value in case of 3-state check box.
  3. Chart: the chart title position is correctly calculated according to the title format text alignment.
  4. Chart: the legend located in front of the chart is located over the chart objects and table now.
  5. CBCGPEditCtrl: fixed bug with the remaining selection redrawing after block expanding/collapsing.
  6. Gauge: fixed bug with setting scale value outside the range in the gauge interactive mode.
  7. Fixed some bugs in owner-draw CBCGPListBox without LBS_HASSTRINGS style.
  8. Ribbon backstage view property sheet: removed flickering when the page is displayed for the first time.
  9. CBCGPToolBar: fixed bug with resizing user-defined images in high-DPI mode.
  10. CBCGPToolBarImages::Save: correctly saves PNG images now.
  11. Grid control: fixed bug with drawing filter bar.
  12. CBCGPMessageBox supports MB_TOPMOST and MB_SETFOREGROUND flags now.

Version 23.2. Released 11/24/2014

New features:

  1. All product functionalities were thoroughly tested under Windows 10 preview. We confirm that our product is ready for use in this new operating system.
  2. Ribbon Bar
    1. Implemented Ribbon Application Modes support. Now you've a simple and efficient way to associate various Ribbon elements (such as buttons, panels or categories) with specific application modes and automatically hide "non-relevant" Ribbon elements at run time. For example, if your application has demonstration and standard modes and file saving operation is not available in the demo mode, associate save buttons with the standard mode. You can specify Ribbon elements application modes in BCGRibbonDesigner (see screenshot) or calling new CBCGPBaseRibbonElement::SetApplicationModes method. Call CBCGPRibbonBar::SetApplicationModes to change the application mode at run time. New sample application RibbonModesDemo (see screenshot) shows how to use this new feature.
    2. Backstage view recent files/folders list shows tooltips with a full item path.
    3. CBCGPRibbonPaletteButton: added new method 'SetInitialColumns'. This attribute is useful in case of showing a large amount of gallery icons when application is launched in the wide-monitor system.
    4. CBCGPRibbonButton: implemented popup dialogs support (see screenshot). The following new methods were added to CBCGPRibbonButton class:
      • EnablePopupDialog
      • IsPopupDialogEnabled
    5. New attribute BCGPGLOBAL_DATA::m_bAutoTrimRibbonLabels allows to keep leading/trailing spaces in the ribbon button labels.
    6. New virtual method CBCGPRibbonBar::IsChangingMinimizeStateAllowed allows to disable changing of minimized state at run time.
    7. CBCGPRibbonBar::SetAutoRepeatCmdDelay allows to change ribbon button auto-repeat delay.
    8. Added keyboard navigation support to CBCGPRibbonStatusBar.
    9. Added new notification messages:
      1. BCGM_ON_BEFORE_RIBBON_MAIN_PANEL: the application main frame receives this message before Ribbon application menu is displayed.
      2. BCGM_ON_TOGGLE_RIBBON_MINIMIZE_STATE: notifies about Ribbon minimized state changing.
  3. Extended application keyboard navigation
    1. Implemented Visual Studio-like MDI Windows Navigator (see screenshot). The following new methods were added to CBCGPMDIFrameWnd class:
      • EnableWindowsNavigator(BOOL bEnable): enables/disables MDI Windows Navigator. Default keyboard shortcuts Ctrl+Tab and Ctrl+Shift+Tab will be used.
      • CBCGPMDIFrameWnd::EnableWindowsNavigator(UINT nNextCmdID, UINT nPrevCmdID): enables MDI Windows Navigator. Custom keyboard shortcuts will be used.
      • IsWindowsNavigatorEnabled: returns TRUE if Windows Navigator is enabled; FALSE - otherwise. Please take a look at BCGPVisualStudioGUIDemo example to see this feature in action.
    2. Application keyboard shortcuts associated with ID_PREV_PANE and ID_NEXT_PANE commands (by default F6 and Ctrl+F6) automatically switch to the next application pane. Setting new m_bAutoPaneActivation flag (in CBCGPFrameWnd and CBCGPMDIFrameWnd classes) to FALSE disables this feature.
    3. Added a new virtual method CBCGPBaseControlBar::IsTabStop: override this method and return FALSE if you wish to prevent accessing the control bar by the keyboard.
    4. Override new virtual methods CBCGPDockingControlBar::GetPaneInfo and CBCGPMDIChildWnd::GetPaneInfo to obtain the docking pane/MDI child information such as name, icon and description.
  4. Chart and Gauges
    1. Chart control: implemented multiple Pie, Funnel and Pyramid charts (see screenshot). Each series will be presented as individual shape and all these shapes are optimally positioned inside the chart area. Please take a look at BCGPChartExample ("Multiple Pies" view) to see this feature in action.
    2. New virtual method 'CBCGPChartVisualObject::OnDrawChartSeriesName' allows to customize chart series name appearance.
    3. CBCGPRadialMenu: implemented radial menu animation. CBCGPRadialMenu constructor has new, optional parameters:
      • animationStyle: BCGPRadialMenuAnimationStyle_None, BCGPRadialMenuAnimationStyle_Grow, BCGPRadialMenuAnimationStyle_Fade or BCGPRadialMenuAnimationStyle_Slide
      • dblAnimationTime Please take a look at BCGPGaugesDemo ("Radial Menu" view) to see this feature in action.
      • CBCGPStaticGaugeImpl: added ticker mode support: call new method 'StartContentScrolling' to start content scrolling and 'StopContentScrolling' to stop it. BCGPGaugesDemo example application ("Text Indicator" view) illustrates this new feature.
  5. Miscellaneous
    1. Improved Scenic Visual Manager for Windows 8/8.1 (see screenshot).
    2. CBCGPMenuButton: implemented popup dialogs support (see screenshot). The following new methods were added to CBCGPMenuButton class:
      • EnablePopupDialog
      • OnBeforeShowPopupDlg
      • ClosePopupDlg
    3. CBCGPTabWnd:
      • Tab name editing is implemented for each tab style now.
      • SetNewTabLabel allows to specify new tab text label.
    4. CBCGPWinUITiles: added ability to specify custom text formats. The following new methods were added:
      • SetCaptionTextFormat
      • SetGroupCaptionTextFormat
      • SetCaptionButtonTextFormat
      • SetHeaderTextFormat
      • SetNameTextFormat
    5. CBCGPListBox: implemented item tooltip support. SetItemToolTip, GetItemToolTip and GetItemToolTipDescription methods were added to this class. ListBoxDemo sample application demonstrates this new feature.
    6. CBCGPCaptionBar::SetBitmap has a new optional parameter 'BOOL bAutoScale'. Set it to TRUE to scale image in the high DPI mode.
    7. Added a new optional parameter 'LPCTSTR lpszInitialFolder' to CBCGPEdit::EnableFileBrowseButton method.
    8. New attribute 'CBCGPGraphicsManagerGDI::m_bExtendedMappingMode' allows working with non-MM_TEXT mapping mode.
    9. CBCGPPlannerManagerCtrl::SetImages has a new optional parameter 'BOOL bAutoScale'. Set it to TRUE to scale image in the high DPI mode.
    10. CBCGPSliderCtrl::SetSelectionColor specifies the slider control selection color.
    11. CBCGPStatic control supports SS_ENDELLIPSIS, SS_PATHELLIPSIS and SS_WORDELLIPSIS styles now.
    12. CBCGPBaseVisualObject has a new virtual method 'OnAnimationFinished'.
  6. Examples and samples:
    1. Added new sample RibbonModesDemo: illustrates Ribbon application modes.
    2. BCGPVisualStudioGUIDemo: demonstrates MDI windows navigator.
    3. BCGPChartExample: added multiple pie charts demonstration.
    4. BCGPControls: demonstrates how to use menu button control with a popup dialog.
    5. BCGPGaugesDemo: added static gauge in "ticker" mode and radial menu animation demonstrations.
    6. RibbonGadgets: demonstrates how to use ribbon button control with a popup dialog.
    7. ListBoxDemo: shows how to add custom tooltip to the list box items.


  1. CBCGPMemDC::CBCGPMemDC is working correctly with a printer DC
  2. Ribbon customization: fixed bug with copying backstage view item to the custom ribbon panel. In the previous versions this control was rendered incorrectly in some visual themes.
  3. Fixed bug in CBCGPChartLongSeries::OnCalcScreenPoints when scatter mode is on.
  4. CBCGPDateTimeCtrl doesn't change the time when user selects a new date from the drop-down calendar.
  5. CBCGPExplorerToolBar correctly scales navigation icons in high DPI mode.
  6. Fixed bug in rendering right-aligned text in CBCGPListBox with LBS_USETABSTOPS style.
  7. CBCGPMessageBox: the check box has the same font as message box.
  8. CBCGPPropList: fixed bug with positioning edit boxes in the high DPI mode.
  9. CBCGPRibbonCategory::CreateCustomCopy doesn't copy custom ribbon panes.
  10. Ribbon edit box: fixed bug with showing edit context menu when ribbon has a minimized state.
  11. Fixed problem with temporary hiding CBCGPStatusBar window when Ribbon backstage view is activated.
  12. CBCGPToolBarImages::ExtractIcon correctly processes 32-bit icons.
  13. Fixed bug with down-arrow color in rendering of CBCGPToolbarMenuButton on Aero background (Windows 7 or later).
  14. Fixed several minor bugs in drawing GUI objects in high-DPI systems.
  15. Grid control: fixed Filter Bar drawing problems.
  16. Grid control: disabled selection highlighting of header items in whole row selection mode.
  17. Grid control: removed unnecessary horizontal scrolling on mouse click in whole row selection mode.
  18. Report Control: fixed even/odd coloring in Preview Area.

Version 23.1. Released 09/04/2014

New features:

  1. Added Animation support (see screenshot) - new class CBCGPAnimationManager wraps functionality of Windows IUIAnimationManager interface. Using this new class, developer can add animation support in few lines of code: just derive any class from CBCGPAnimationManager, call StartAnimation and override OnAnimationValueChanged virtual method. The following animation types are supported:
    1. Legacy: timer-based animation. If application is launched under the OS where Animation Manager is not supported (for example Windows XP or Windows Vista without SP1), CBCGPAnimationManager will automatically use this animation type.
    2. Accelerate/Decelerate
    3. Cubic
    4. Linear
    5. Smooth Stop
    6. Parabolic from Acceleration
    The animation support was added to the following product components:
    1. Chart control (series appearance).
    2. Gauges (smooth pointer moving).
    3. Page transition manager (used in the property sheet, ribbon backstage view in custom page containers).
    4. WinUI Tiles
    Please run a new sample AnimationManagerDemo to study how to implement your own animation.
  2. Visualization.
    1. Improved high-DPI support:
      1. Added internal icons prepared for 125 and 150 DPI scales.
      2. Added 'ScaleByDPI' scaling helpers to CBCGPGlobalUtils class.
      3. CBCGPListBox::SetImageList has a new optional parameter 'BOOL bAutoScale = FALSE'. Set it to TRUE to auto-scale list box images.
      4. Improved high DPI support in the following controls:
        • Analog clock
        • Breadcrumb control
        • Date/time picker
        • Drop-down toolbar button
        • Duration control
        • Advanced edit control
        • Font combo box
        • Grid control
        • Outlook Bar
        • Radial Menu
        • Ribbon Gallery
        • Rotation Control
    2. CBCGPVisualManager class has the following new methods:
      • OnDrawProgressMarqueeDot: draws progress bar marquee dot.
      • GetProgressMarqueeColor: gets progress bar marquee fill color.
      • OnDrawTabDot: draws tab control page marker (slider mode).
    3. Our examples/samples and tools have new icons provided by Axialis Software.
  3. Grid Control.
    1. Improved grid scaling support: a new virtual method CBCGPGridCtrl::OnScaleChanged allows customizing the grid appearance according to current scale (zoom level).
    2. CBCGPGridView handles the visual manager changing and automatically updates the grid color theme.
    3. Added CBCGPGridCheckItem::Toggle method.
    4. Added support of HDF_BITMAP_ON_RIGHT flag in CBCGPGridCtrl::SetColumnAlign. Specify this flag to draw icons at the grid cell right side.
  4. Ribbon Bar.
    1. CBCGPRibbonComboBox: new method EnablePopupDialog allows to associate ribbon combo box control with popup dialog (see screenshot). Please take a look at RibbonGadgets sample to see this feature in action.
    2. Added Visual Manager support to Ribbon customization dialogs/pages (CBCGPRibbonKeyboardCustomizeDlg, CBCGPRibbonCustomizeRibbonPage, CBCGPRibbonCustomizeQATPage and CBCGPRibbonToolsPage) (see screenshot).
    3. Ribbon Designer allows to associate Ribbon Label control with ID.
  5. Visual Container and Visual Designer.
    1. Implemented custom controls support in the Visual Designer (see screenshot). To add your control to the Visual Container, simply drag "Custom Control" icon from the toolbox, drop it into container, specify control C++ class (it should be derived from CWnd and must have DECLARE_SERIAL declaration!) and override a new virtual method OnCreateCustomControl in your CBCGPVisualContainer-derived class. Please take a look at BCGPDigitalDashboard example to study this technology.
    2. Added basic color theme to CBCGPWndHostVisualObject class: SetColorTheme/GetColorTheme methods allow to set/get 'CBCGPWndHostColors m_Colors' member.
    3. Visual Designer allows to specify control run-time class: for example, if you need to use CBCGPGridCtrl-derived class.
    4. Added GetScrollOffset method to CBCGPVisualContainer class.
    5. Methods CBCGPVisualContainer::AdjustLayout and CBCGPVisualContainer::AdjustScrollBars are virtual now.
    6. Visual Designer: added ability to copy/paste property grid groups (such as selected object color theme or layout).
  6. Property Grid.
    1. Implemented ability to copy/paste groups using control context menu: CBCGPPropList::EnableContextMenu has a new optional parameter 'BOOL bAllowCopyPasteGroups'.
    2. New methods AllowCopy/IsAllowCopy were added to CBCGPProp class.
    3. CBCGPPropList sends the following new notifications to owner when the group content is changing/was changed:
      • BCGM_PROPERTY_GROUP_CHANGING: wParam = Control ID, LPARAMP = pointer to CBCGPProp (group)
      • BCGM_PROPERTY_GROUP_CHANGED: wParam = Control ID, LPARAMP = pointer to CBCGPProp (group)
    4. CBCGPProp::Redraw has a new optional parameter 'BOOL bWithSubItems = FALSE'. Set it to TRUE if you wish to redraw property with all sub items.
  7. Coded UI Tests and MS Active Accessibility.
    1. Coded UI Tests are working properly now in tabbed CBCGPDockingControlBars and for their embedded toolbars.
    2. CBCGPBaseTabWnd correctly supports MSAA "accDoDefaultAction" method.
  8. Chart Control.
    1. Added series appearance animation (for most series types except surface and huge data). The animation style can be specified by new CBCGPChartSeries::BCGPChartAnimationStyle enumeration:
      • Default: series-type specific animation (growing in case of column charts or sliding for the lines).
      • None: no animation.
      • Grow: Y-value is changing from 0 to the current value.
      • Fade: transparency changing animation.
      • Slide: series are "sliding" along X-axis, from left to right.
      • Slide reversed: series are "sliding" along X-axis, from right to left.
      Call CBCGPChartVisualObject::StartAnimation to display chart series with the animation effect. Please take a look at BCGPChartExample (see screenshot) to see this feature in action.
    2. CBCGPChartSeries::SetVirtualMode has a new optional parameter 'BOOL bRedraw = TRUE'.
    3. Improved color themes with gradient brushes (see screenshot).
    4. Improved drawing of the series shadows in the dark color themes.
  9. Page Transition Manager
    1. Starting from version 23.1, the page transition manager is based on new animation manager:
      1. SetPageTransitionEffect has new optional parameters:
        • BCGPAnimationType animationType: specifies the animation type such as smooth stop, accelerate/decelerate or Cubic.
        • CBCGPAnimationManagerOptions* pAnimationOptions: additional animation options.
      2. GetAnimationType: returns the animation type.
      3. GetAnimationOptions: returns the animation options.
    2. Added new page transition effect: "Appear" (similar to Office 2013 options tabs changing effect). CBCGPPageTransitionManager::BCGPPageTransitionEffect has a new member: BCGPPageTransitionAppear. Please take a look at PropSheetDemo sample application to see this new effect.
  10. Property Sheet
    1. Added new property sheet look: PropSheetLook_Slider (see screenshot). This style is useful when you have a lot of property pages with the same name and you wish to optimize a dialog layout (the same approach is used in Web "slider" components). Please launch PropSheetDemo sample application to see this feature in action.
    2. CBCGPPropertySheet::EnablePageTransitionEffect has 2 new optional parameters:
      1. BCGPAnimationType animationType: page transition type
      2. CBCGPAnimationManagerOptions* pAnimationOptions: animation options
  11. Miscellaneous.
    1. Added new marquee styles to CProgressCtrl: "Dots" (similar to Visual Studio 2012/2013 setup dialog) and "Color Gradient" (see screenshot). The style can be specified in m_MarqueeStyle CProgressCtrl member. In addition, you can specify the marquee style and color in CBCGPProgressDlgParams new members: m_MarqueeStyle, m_clrMarquee and m_clrMarqueeGradient. Please take a look at ProgressDialogDemo sample to see this feature in action.
    2. Added ability to implement a custom recent files list. CBCGPWinApp has the following new virtual methods:
      • GetRecentFilesCount: returns a number of the recent files.
      • GetRecentFilePath: gets recent file path by index.
      • GetRecentFileDisplayName: gets recent file display name by index.
    3. CBCGPBaseTabWnd::SetImageList, CBCGPOutlookBarPane::AddButton, CBCGPTasksPane::SetIconsList and CBCGPOutlookWnd::SetToolbarImageList allow to load PNG images.
    4. CBCGPTabWnd: added new style 'STYLE_DOTS' (see screenshot).
    5. CBCGPButton: implemented support of images used in control pressed state. CBCGPButton::SetImage and CBCGPButton::SetCheckedImage methods have a new optional parameter: IconPressed.
    6. CBCGPCalendar: added custom color theme support. SetCustomColors, GetColors and IsCustomColors methods were added to this class.
    7. CBCGPCircularGaugeImpl: improved algorithm of drawing tick mark labels (see screenshot).
    8. New attribute 'CBCGPContextMenuManager::IsTracking' allows to determine if the context menu manager in tracking mode (CBCGPContextMenuManager::TrackPopupMenu was called).
    9. Added ability to specify custom CBCGPSmartDockingManager-derived class: CBCGPSmartDockingParams class has a new member 'CRuntimeClass* m_pRTI'.
    10. CBCGPEdit::EnablePopupDialog has a new optional parameter 'BOOL bComboBoxMode = FALSE'. Set this parameter to TRUE if you wish to create edit box with combo box appearance.
    11. Implemented ability to customize edge size in brush 'BCGP_GRADIENT_BEVEL' gradient type: CBCGPBrush has SetBevelSize/GetBevelSize new attribute.
    12. Added CBCGPMaskEdit::GetEditText method. Please call this method to work around the issue with EN_CHANGE message handling for the masked edit.
    13. CBCGPEditCtrl::SetLineNumbersMargin has a new, optional parameter 'int nExtraMarginWidth = 0'. You can specify a text position inside line numbers area.
    14. Method CBCGPEditCtrl::DrawColorLine is virtual now.
    15. Method CBCGPStatic::DoPaint method is virtual now.
  12. Examples and Samples:
    1. New sample AnimationDemo (see screenshot) demonstrates how to add animation support to CWnd-derived class.
    2. BCGPChartExample demonstrates chart series animation (see screenshot).
    3. BCGPDigitalDashboard: "Site Statistics" view includes a custom Calendar control (see screenshot).
    4. ProgressDialogDemo illustrates new progress marquee styles.
    5. PropSheetDemo: added page transition options.
    6. RibbonGadgets demonstrates how to add Ribbon combo box control with a custom drop-down dialog.
    7. TabControl: added 'CBCGPTabWnd::STYLE_DOTS' style demonstration.


  1. CBCGPGridCtrl: fixed bug with printing an empty grid.
  2. CBCGPGridCtrl: CBCGPDateTimeCtrl embedded control sends update notification to the parent grid now.
  3. CBCGPGridCtrl: improved filter bar rendering in the Visual Manager grid theme.
  4. CBCGPGridCtrl: fixed bug with positioning of the buddy spin control in the grid cell.
  5. CBCGPBarContainerManager::ControlBarFromPoint doesn't return invisible pane now.
  6. CBCGPColorDialog: fixed window initial size bug (was in some OSs)
  7. CBCGPProp::OnClickMenuButton: fixed bug with adding unnecessary menu separators.
  8. CBCGPWindowsManagerDlg don't add hidden MDI child windows to the windows list.
  9. Diagram: fixed bug with wrong anchors of the diagram connectors.
  10. CBCGPBaseVisualCtrl: fixed info tip positioning bug.
  11. CBCGPBaseVisualCtrl::OnNcPaint: the container scroll bars are correctly rendered now under some legacy OSs such as Window XP.
  12. CBCGPBaseVisualObject::Redraw: fixed bug with displaying controls in the scrolled container.

Version 23.0. Released 05/21/2014

New features:

  1. Implemented Digital Dashboards support (see screenshot). The following new and updated product features provide easy and efficient way to create fully-functional interactive digital dashboards:
    • Visual Designer: added Chart, Grid, Edit box and container scroll bars support (see screenshot).
    • Added new class CBCGPWndHostVisualObject. This is a base class of any custom windows hosted inside the visual container.
    • 2 new classes CBCGPGridVisualObject and CBCGPEditVisualObject (both derived from CBCGPWndHostVisualObject) provide a simple way to add grid and edit controls to the visual container.
    • CBCGPVisualContainer changes:
      1. EnableScrollBars has a new optional parameter 'BCGP_VISUAL_SCROLLBAR_STYLE style = CBCGPVisualScrollBar::BCGP_VISUAL_SCROLLBAR_FLAT'
      2. New method EnableScalingByMouseWheel allows scaling the container content using the mouse wheel. A new registered message BCGM_CONTAINER_SCALE_CHANGED will be sent to container owner window when user scales the container.
      3. New virtual methods OnAfterCreateWnd and OnBeforeDestroyWnd were added.
    Please run a new example BCGPDigitalDashboard to see these features in action.
  2. Grid Control.
    1. Implemented Grid scaling (see screenshot). The following new methods and notifications were added to CBCGPGridCtrl class:
      1. SetScalingRange: specify the grid scaling range
      2. GetMinScale and GetMaxScale: obtain the grid scaling range
      3. SetScale: set the current grid scale
      4. GetScale: get the grid scale
      5. BCGM_GRID_SCALE_CHANGED: notify owner about grid scale changing
    2. Popup dialogs support (see screenshot). A new class CBCGPGridPopupDlgItem provides a way to show a popup dialog associated with the grid cell.
    3. Added Grid scrollbars custom colors support (see screenshot).
    Please take a look at BCGPGridExample demonstration program to see these features in action.
  3. Edit box.
    1. Added popup dialogs support (see screenshot). Please call a new method 'CBCGPEdit::EnablePopupDialog' to setup the "popup dialog" mode. A new virtual function 'CBCGPEdit::ClosePopupDlg' allows to set edit text from the popup dialog. Please take a look at EditBoxDemo sample to see this feature in action.
    2. Custom color themes (see screenshot). The following new methods were added to CBCGPEdit class:
      • SetColorTheme: change edit box color theme
      • GetColorTheme: get edit box color theme
      Please take a look at EditBoxDemo sample to see this feature in action.
    3. CBCGPEdit::EnableFolderBrowseButton has a new optional parameter 'ulFlags = BIF_RETURNONLYFSDIRS'. You can change this flag to customize the browse for folder dialog appearance and behavior by specifying various flags such as BIF_USENEWUI or BIF_BROWSEFORPRINTER.
  4. Ribbon Bar.
    1. Implemented context help support (see screenshot). To enable this mode, you'll need to call a new CBCGPRibbonBar method: void EnableContextHelp(BOOL bEnable = TRUE, const CString& strTooltipPrompt = _T("Press F1 for help."), const CList<UINT,UINT>* plstElementsWithContextHelp = NULL /* NULL - all ribbon elements */); BCGControlBar Pro Application Wizards were updated by adding the Ribbon context help mode.
    2. Added a new virtual method 'CBCGPRibbonBar::OnGetCustomToolTip': override it if you need to set the Ribbon element's tooltip at run-time.
    3. New method CBCGPRibbonGalleryCtrl::EnsureVisible ensures that specified item is visible within the control.
    4. CBCGPRibbonPanel::SetAlwaysCollapsed method was added. Call this method if you need to collapse a specific Ribbon panel.
    5. Ribbon Designer changes:
      1. Added Visual Studio 2013 support.
      2. Implemented Ribbon Context Help support.
      3. Added Ribbon panel collapse mode support.
  5. Property Grid.
    1. Added CBCGPProp options custom data support: CBCGPProp::AddOption has a new optional parameter 'DWORD_PTR dwData = 0'. Use it to associate the property option with a specific data. New method GetOptionData obtains the data by index.
    2. New method CBCGPProp::SetValueTextColor allows to change the property value text color.
    3. CBCGPProp::Show method is virtual now.
    4. CBCGPFileProp constructor has a new optional parameter 'ulFlags = BIF_RETURNONLYFSDIRS'. You can change this flag to customize the browse for folder dialog appearance and behavior by specifying various flags such as BIF_USENEWUI or BIF_BROWSEFORPRINTER.
    5. New virtual method CBCGPPropList::GetToolBarResourceID allows to load your own toolbar image instead of the standard.
    6. CBCGPPropList::EnableDescriptionArea has a new optional parameter 'BOOL bShowMoreIndicator'. Set it to TRUE is you wish to indicate that some description text is out of screen.
  6. Coded UI Tests and MS Active Accessibility. The following product controls were updated:
    1. CBCGPGridCtrl
    2. CBCGPStatusBar
    3. CBCGPMessageBox
    4. CBCGPButton (correctly processes checkbox and radio button accessibility state and role).
    5. CBCGPPropList
    6. Ribbon bar edit box and combo box.
  7. Chart Control.
    1. Added Info Tip support (see screenshot ). Simply call EnableInfoTip instead of EnableTooltip and you'll get a nice-looking, semitransparent popup window. New virtual method 'CBCGPChartVisualObject::GetInfoTipColor' allows to customize the info tip appearance for the specific chart series or data point.
    2. Method 'CBCGPChartVisualObject::OnCreateChartSeries' is virtual now.
  8. Popup ("Desktop Alert") Window.
    1. CBCGPPopupWndParams class has 2 new members now: m_nXPadding and m_nYPadding. Modify them in order to change the popup window content padding.
    2. New method 'CBCGPPopupWindow::UpdateContent' allows to update the popup window content at run-time.
    3. Added ability to show/hide the close button: CBCGPPopupWindow::EnableCloseButton/CBCGPPopupWindow::HasCloseButton methods were added.
  9. Miscellaneous.
    1. Improved Application Wizard (for Visual Studio 2005 and later): added option to select a new view type such as Grid, Editor, Planner or Diagram.
    2. CBCGPBaseTabWnd: added icons scaling according to the current DPI. EnableIconScaling and IsIconScaling methods were added.
    3. CBCGPWinUITiles: implemented scrollbar style support - new methods SetScrollBarStyle/GetScrollBarStyle were added.
    4. Diagram: added diagram shape parts support. CBCGPDiagramVisualObject has a new enumerator 'Parts' and 3 new methods: HitTestPart, GetPartRect and GetPartTextData.
    5. Added custom font support to CBCGPCalendar window.
    6. CBCGPColorBar: the color box size is scaled according to the window font size.
    7. Added font scaling support to CBCGPTextFormat.
    8. Added ability to specify the group text color: CBCGPGroup has a new public member 'm_clrText'.
    9. CBCGPMDIChildWnd: new virtual methods 'GetMDITabBkColor' and 'GetMDITabTextColor' allow to customize MDI tab colors.
    10. New virtual method CBCGPPropertySheet::OnDrawPageIcon allows to customize the property page icon appearance.
    11. CBCGPScrollBar: added custom color theme support. Please call a new method 'SetColorTheme' to specify your custom color theme and 'GetColorTheme' to obtain the theme.
    12. CBCGPSliderCtrl: implemented TBS_ENABLESELRANGE and TBS_NOTHUMB styles support.
  10. Examples and Samples:
    1. New example BCGPDigitalDashboard (see screenshot) illustrates how to create interactive digital dashboards with Grids, Charts, Gauges and other controls.
    2. New sample GesturesDemo (see screenshot) demonstrates how to add Windows gesture support to CWnd-derived class.
    3. BCGPChartExample demonstrates new Info Tip object and how to use external scroll bars along with the chart (CChartHugeDataView class).
    4. BCGPGridExample illustrates grid popup dialogs, grid scaling and subscript/superscript grid items.
    5. EditBoxDemo sample illustrates edit box custom colors and popup dialogs.
    6. WinUITilesDemo: added scrollbar custom color theme demonstration.


  1. Solved some minor 64 bit-compatibility problems.
  2. CBCGPCircularGaugeImpl and CBCGPLinearGaugeImpl: fixed bug with sub-gauge reposition when the parent container was scrolled.
  3. The application frame windows is correctly maximized/restored now in the multi-monitor environment: in the previous version the frame wasn't correctly maximized in case of the different screen size monitors located in "reversed" order.
  4. CBCGPGraphicsManagerD2D::BeginDraw: solved problem with D2D initialization on some graphics cards.
  5. CBCGPListBox: fixed bug with description area height calculation.
  6. CBCGPOutlookBarPane is working with internal image list now. In the previous versions this class used a global toolbar image list for the icons rendering.
  7. CBCGPPropertySheet: fixed bug with adding new pages at run-time when window has PropSheetLook_Tabs type and Visual Manager style was specified.
  8. CBCGPPropList: fixed bug with the search box vertical centering in case of the large property grid toolbar images.
  9. CBCGPPropList: fixed bug with the vertical scrollbar range and position after typing some characters in the search box.
  10. CBCGPSliderCtrl correctly handles TBM_SETTICFREQ message now.
  11. CBCGPPlannerViewDay: fixed scrolling using ‘Up’ and ‘Down’ keys.
  12. Fixed window region bug for the ribbon-based applications with ‘Scenic’ visual manager.
  13. Chart: fixed hit-testing bug in the parent container scrolling mode.
  14. Grid: fixed bug in multi-line header rendering.
  15. Grid: fixed bug with multiple selection of several columns.
  16. CBCGPMaskEdit: fixed paste operation bug.
  17. Diagram: improved drawing of diagram labels.
  18. Diagram: fixed label in-place editing bug.
  19. Diagram: fixed connection ports drawing bug.
  20. Diagram: fixed bug with a scaled image rendering.

Version 22.1. Released 01/16/2014

New features:

  1. Implemented Visual Studio 2013-style visual manager (see screenshot). Although VS 2013 color themes are very similar to the corresponding VS 2012 themes, some GUI controls have a different look. The API changes are:
    • Added new class CBCGPVisualManagerVS2013 (derived from CBCGPVisualManagerVS2012)
    • BCGP_VISUAL_THEME enumerator has 3 new members:
      • BCGP_VISUAL_THEME_VS_2013_LIGHT: VS 2013-style light color theme.
      • BCGP_VISUAL_THEME_VS_2013_DARK: VS 2013-style dark color theme.
      • BCGP_VISUAL_THEME_VS_2013_BLUE: VS 2013-style blue color theme.

    Please run BCGPVisualStudioGUIDemo example to see this new theme.

  2. Grid Control.
    1. Implemented Excel-like cell conditional formatting (see screenshot). The following formatting types were added:
      • Data Bars (see screenshot ). The length of the data bar represents the value in the cell. Call 'CBCGPGridItem::SetDataBar' new method to specify the data bar length (in percentage). By default, the data bars appearance is provided by the Grid color theme, but you can change it by calling a new method 'CBCGPGridCtrl::SetCustomDataBarColors'. A new method 'OnDrawGridDataBar' has been added to CBCGPVisualManager class, so you can customize Data Bars appearance in your own visual manager.
      • Color Scales (see screenshot ). Displays 2 or 3 color gradients in a range of cells. The shade of the color represents the value in the cell. Call 'CBCGPGridItem::SetDataColorScale' new method to specify the color shade (in percentage). By default, the colors are provided by the Grid color theme, but you can customize them by specifying the following new members of CBCGPGridColors:
        • m_clrScaleLow: the color of the lowest value.
        • m_clrScaleHigh: the color of the highest value.
        • m_clrScaleMid (optional): the color of the middle value.
        In addition, you can override GetGridColorScaleBaseColors method in your CBCGPVisualManager-derived class.
      • Icon Sets (see screenshot ). Displays an icon from the icon set in each cell. Each icon represents the value in the cell. Call 'CBCGPGridItem::SetDataIcon' new method to specify the icon (in percentage). By default, the Grid displays icons from the default set (5 arrows), but you can specify the icons set by calling a new method 'CBCGPGridCtrl::SetCustomDataIconSet'.
    2. Added Sparkline grid cells (see screenshot). A new class CBCGPGridSparklineItem implements a sparklines grid cell - using this class you can easily add charts to your grid. The main advantages of this feature are:
      • Different chart types (line, area, column, pie and bubble)
      • Ability to combine different chart types within the single grid cell
      • Chart color scheme is created automatically from the grid colors
      • Custom data markers

    Please take a look at BCGPGridExample demonstration program (new "Conditional Formatting" and "Sparkline" views) to see these features in action.

  3. Chart Control.
    1. Implemented Data Table (see screenshot ). You can display the Chart series data in the grid located below the chart X axis. This feature is available for the following chart types only: 2D Line, 2D Column, 2D Area, and Stock. The implementation includes:
      • Ability to display data from the several chart series including invisible.
      • Customizable data table appearance. New structure 'BCGPChartFormatDataTable' allows to specify data table colors, font, grid lines and other options.
      • Smart data labels rounding: the chart automatically builds the table data point labels for the nice-looking visual presentation.
      • Print and print preview support.
      To display/hide the data table in your chart simply call a new method 'CBCGPChartVisualObject::ShowDataTable'. The second optional parameter 'pDataTableAreaFormat' allows to customize the data table appearance and content. Please take a look at BCGPChartExample demonstration program to see this feature in action:
      • "Chart Elements" shows a basic usage of the data table
      • "Chart Data Table" view illustrates how to customize the table appearance, add/remove series rows and enable/disable values rounding.
      • "Stock Real Time" view demonstrates the data table in the real-time chart.
      • "Interactive Chart" view illustrates the data table hit testing and custom drawing.
    2. Added ability to group smaller Pie slices (see screenshot). To enable this feature, you've to call a new method 'CBCGPChartPieSeries::SetGroupSmallerSlices'. Please take a look at BCGPChartExample demonstration program (new "Pie with Grouped Smaller Slices" view) to see this feature in action.
    3. Improved tooltip appearance in the Pie, Doughnut and Torus charts (see screenshot).
    4. In addition, in this version we introduce a new set of Chart color themes (see screenshot): CT_FLAT_2014_1, CT_FLAT_2014_2, CT_FLAT_2014_3 and CT_FLAT_2014_4.
  4. Ribbon Bar.
    1. Implemented custom caption buttons (see screenshot). The following new methods were added to CBCGPRibbonBar class:
      • AddCaptionCustomButton
      • GetCaptionCustomButtonsCount
      • GetCaptionCustomButton
      • RemoveAllCaptionCustomButtons
    2. Ribbon Panel can be declared as "non-collapsible": 'SetNonCollapsible' and 'IsNonCollapsible' methods were added to CBCGPRibbonPanel class. Please note that you cannot apply this attribute to the Ribbon panel that includes edit box or combo box controls.
    3. Added ability to draw items inside the disabled Ribbon gallery. CBCGPRibbonPaletteButton class has 2 new methods:
      • SetDrawDisabledItems
      • IsDrawDisabledItems
    4. Added tooltip support to CBCGPRibbonGalleryCtrl (see screenshot). CBCGPRibbonGalleryCtrl class has a new method 'SetItemToolTip' which allows to associate tooltip with a gallery item. Please take a look at RibbonGadgets sample ("Galleries on Dialog" window) to see this feature in action.
  5. Docking Panes.
    1. Added ability to display auto-hide docking panes by mouse click. CBCGP****FrameWnd::EnableAutoHideBars has a new optional parameter ‘BOOL bActivateOnMouseHover = TRUE’. Please take a look at BCGPVisualStudioGUIDemo example to see this feature in action (you may change the option in “Application Look” dialog (see screenshot).
    2. New global variable CBCGPControlBar::m_bHideDisabledControlBarMenuItems allows to hide unused control bar menu items instead of disabling them (see screenshot).
    3. Added ability to scroll inactive windows using mouse wheel. CBCGPWorkspace has 2 new methods for obtaining/modifying this behavior:
      • EnableMouseWheelInInactiveWindow
      • IsMouseWheelInInactiveWindowEnabled
    4. Added MS Active Accessibility support to Toolbox docking pane.
    5. Added a new virtual method 'CBCGPControlBar::OnGetControlBarMenuItemText'. Overriding it allows to specify the custom menu item labels.
  6. Property Grid:
    1. New virtual method CBCGPPropList::IsPropertyMatchedToFilter allows to customize the property grid filtering. In addition, 'CBCGPPropList::SetPropertiesFilter' method is virtual now.
    2. Implemented ability to specify name column text alignment (see screenshot): new method 'SetNameAlign' and 'GetNameAlign' methods were added to CBCGPPropList class.
    3. Added ability to remove all property sub-items: new method CBCGPProp::RemoveAllSubItems has been added.
    4. Improved custom menu items support. The following new virtual methods were added to CBCGPProp class:
      • OnMenuCustomItem: called when user clicks on the custom menu item
      • OnGetMenuCustomItemState: allows to change custom menu item state such as MF_GRAYED or MF_CHECKED
  7. Visual Container:
    1. Implemented gesture pan event support in CBCGPVisualContainer. Now you can easily scroll visual containers on the touch-screen devices.
    2. Added ability to export full container content: the following CBCGPVisualContainer methods have a new, optional parameter 'BOOL bFullImage = FALSE':
      1. ExportToImage
      2. ExportToBitmap
      3. CopyToClipboard
      4. ExportToFile
      In addition, the following new methods were added to CBCGPVisualContainerCtrl class:
      1. CopyFullImageToClipboard
      2. ExportFullImageToFile
  8. Miscellaneous:
    1. CBCGPShellList has a new virtual method 'IsItemMatchedToFilter'. Override this method if you wish to filter shell list control content. BCGPExplorer example illustrates how to use this new feature.
    2. Property Sheet: new method CBCGPPropertySheet::RenamePage allows to modify a specific page name at run-time.
    3. Gantt Chart: added Visual Manager-style support (see screenshot). New method 'CBCGPGanttControl::SetVisualManagerStyle' allows to specify the visual manager theme.
    4. List box control: added new registered message BCGM_ON_CLICK_LISTBOX_PIN. The control sends it to the owner window when user clicks a pin button.
    5. List box control supports now LBS_USETABSTOPS control style.
    6. Graphics Manager: new method CBCGPTextFormat::SetFontStyle allows to modify font style (e.g., Italic) at run-time.
    7. Date/Time picker and Calendar controls: added mouse wheel handling.
    8. CBCGPBaseTabWnd has a new attribute 'm_bSingleTabIsStatic' (IsSingleTabStatic and SetSingleTabStatic access methods were added). If tab control has one tab only and this attribute is TRUE, the tab will behave as "static" object (no highlighting, no mouse cursor changing).
  9. Examples and Samples:
    1. BCGPVisualStudioGUIDemo demonstrates the new VS 2013-like visual theme, how to display auto-hided docking panes by mouse click and disable auto-hide animation.
    2. New sample application ListBoxDemo illustrates CBCGPListBox features such as group captions, pin buttons and others (see screenshot).
    3. New sample application DynamicPanesDemo demonstrates how to create dynamic docking panes (see screenshot).
    4. BCGPGridExample illustrates Grid Conditional Formatting and Sparkline cells. In addition, in this example we demonstrate how to set custom ("Caption") font to the shortcuts bar title and application caption bar (Office 2013 theme - see screenshot).
    5. BCGPChartExample demonstrates how to create Chart Data Tables, smaller Pie slices grouping and new visual themes.
    6. BCGPGanttDemo example demonstrates Gantt Chart in the Visual Manager theme.
    7. RibbonGadgets sample shows how to add a custom button to the ribbon caption bar and how to assign tooltips to the gallery control.


  1. Chart control: CBCGPChartHistoricalLineSeries::EnableHistoryMode changes historical line data history depth.
  2. CBCGPListBox correctly calculates caption and separator items height if control has LBS_OWNERDRAWVARIABLE style.
  3. CBCGPPropList: fixed bug with clipping property group name.
  4. CBCGPPropList::OnMouseWheel doesn't perform unnecessary grid scrolling if property dialog is opened.
  5. CBCGPOutlookBar::SetButtonsFont correctly assigns a custom font to the underline tab control.
  6. CBCGPToolbarMenuButton object correctly behaves now if 'm_bMenuOnly' attribute is TRUE.
  7. CBCGPRibbonBar::OnMouseWheel. Fixed bug with scrolling tabs after the Ribbon customization.
  8. CBCGPPropertyPage correctly processes controls layout if property sheet header has been specified and property sheet window is resizable.
  9. Fixed bug in building libraries under VS 2013, "Windows XP" platform toolset.

Version 22.0. Released 11/25/2013

New features:

  1. The product was fully tested under Windows 8.1.
  2. The product is compatible with Visual Studio 2013. The product evaluation version includes binary files required for this Visual Studio now.
  3. Coded UI Test Support (see screenshot): implemented support for the coded UI testing framework. Our "top-level" controls such as toolbars, menus and ribbons were fully adapted to the test framework by enhancing Microsoft Active Accessibility support in these controls.
  4. Frames, dialogs and property sheets:
    1. Frame and Dialog windows created with Visual Studio 2012 or Office 2013 theme will be displayed with new shadows (see screenshot). These shadows have a nice-looking glowing effect and based on the theme accent color. If for some reason you will prefer to leave Windows "native" shadows, please set globalData.m_bShowFrameLayeredShadows to FALSE (in your application class constructor).
    2. Property Sheet: implemented collection of various page transition effects such as sliding, fading and pop. The following methods were added to CBCGPPropertySheet class:
      • EnablePageTransitionEffect: allows to specify page transition effect for the property pages. The effect can be one of the following:
        • BCGPPageTransitionNone: no effect
        • BCGPPageTransitionSlide: horizontal sliding effect
        • BCGPPageTransitionSimpleSlide: horizontal sliding effect (2 pages only)
        • BCGPPageTransitionSlideVertical: vertical sliding effect
        • BCGPPageTransitionSimpleSlideVertical: vertical sliding effect (2 pages only)
        • BCGPPageTransitionPop: page pop effect
        • BCGPPageTransitionFade: page fading effect
      • GetPageTransitionEffect: returns Backstage pages transition effect.

      New class CBCGPPageTransitionManager allows to implement page transition effect in your own classes: simply derive your class from CBCGPPageTransitionManager, specify the required effect using SetPageTransitionEffect method and call StartPageTransition method.

  5. Ribbon Bar:
    1. Implemented Backstage pages transition effect. The following methods were added:
      • CBCGPRibbonBar::SetBackstagePageTransitionEffect: allows to specify page transition effect for the Backstage pages.
      • CBCGPRibbonBar::GetBackstagePageTransitionEffect: returns Backstage pages transition effect.

      Please take a look at BCGPMSOfficeDemo example to see this feature in action (you can change the transition effect in "Options" property sheet - see screenshot).

    2. Added ability to enable/disable Ribbon Quick Steps (see screenshot). CBCGPRibbonQuickStep constructor has a new optional parameter 'BOOL bIsEnabled = TRUE'). You can also change the icon state using new method Enable(BOOL bEnable = TRUE); Please take a look at RibbonGadgets sample to see this feature in action.
    3. Added CBCGPRibbonButton::SetIcon method; using it, the developer may change the ribbon's element large/small icon.
    4. New method CBCGPRibbonEdit::GetRecentChangeEvent returns a ribbon edit recent changing reason. The returned value can be one of the following:
      • BCGPRIBBON_EDIT_NOT_CHANGED: edit control lost focus, but the value wasn't changed;
      • BCGPRIBBON_EDIT_CHANGED_BY_ENTER_KEY: the value was changed by pressing Enter key;
      • BCGPRIBBON_EDIT_CHANGED_BY_FOCUS: the value was changed upon mouse click outside the edit control;
      • BCGPRIBBON_EDIT_CHANGED_BY_SPIN_BUTTON: the value was changed by clicking edit control spin button;
      • BCGPRIBBON_EDIT_CHANGED_FROM_DROPDOWN: the value was changed by choosing item from edit drop-down list.
  6. WinUITiles:
    1. Implemented tiles drag and drop. The following new methods were added to CBCGPWinUITiles class:
      1. EnableTilesDragAndDrop
      2. IsTilesDragAndDropEnabled
    2. Load/Save tiles state. Call CBCGPWinUITiles::LoadState to load tiles state and CBCGPWinUITiles::SaveState to save it.
    3. Implemented group custom background and border (see screenshot). CBCGPWinUITiles ::SetGroupCaption has the following new optional parameters:
      • brGroupFill: group background brush
      • brGroupOutline: group outline brush
    4. Added MS Active Accessibility support. CBCGPWinUIBaseObject has the following new virtual methods:
      • GetAccName
      • GetAccValue
      • GetAccDescription
      • GetAccRole
      • GetAccDefaultAction
      • GetAccState Please take a look at WinUITilesDemo sample program to see these features in action.
  7. Desktop Alert (Popup Window):
    1. Added color themes (see screenshot). The following themes were implemented "out of the box":
      • BCGPPopupWindowTheme_VisualManager - default (Visual Manager-based)
      • BCGPPopupWindowTheme_Black
      • BCGPPopupWindowTheme_White
      • BCGPPopupWindowTheme_Gray
      • BCGPPopupWindowTheme_Custom (specified by CBCGPPopupWindow:: SetCustomTheme new method)
    2. Added ability to show window caption with the large font: SetSmallCaption method has a new optional parameter 'BOOL bLargeCaptionFont = FALSE'
    3. Implemented desktop alert pin button (see screenshot). EnablePinButton/HasPinButton methods were added to CBCGPPopupWindow class. Please note that pin button is displayed only if popup window auto-close time is specified.
    4. Popup window appearance: implemented rounded shape, small caption gripper and window shadow (see screenshot). SetRoundedCorners, AreRoundedCorners, SetShadow, IsShadow, SetSmallCaptionGripper and IsSmallCaptionGripper methods were added to CBCGPPopupWindow class.

    Please take a look at PopupDemo sample program to see these features in action.

  8. Grid:
    1. Implemented MS Office-style Filter Menu (see screenshot). The following new methods were added to CBCGPGridCtrl class:
      1. EnableDefaultFilterMenuPopup: allows to display a default (built-in) grid filter menu with custom items and perform a simple grid filtering. To enable a default (built-in) grid filter you should first call EnableFilter without parameters.
      2. ShowFilterMenu: display a filter menu for the specific column. Allows to specify custom filter data and filter string list.
      3. CreateFilter: override this method to create your own, CBCGPGridFilter-derived grid filter.
      4. GetColumnValuesList: override this method to create a custom values list for the specific grid column.

      Please take a look at BCGPGridExample to see this feature in action ("Filtered Grid" page).

    2. Added BCGM_GRID_COLUMN_BTN_CLICK custom message. When user clicks on the header button, grid sends this message to the owner window.
    3. Added support for VT_I8 and VT_UI8 variant types (VS 2008 and later).
    4. CBCGPGridItem::NewInPlaceEdit now returns pointer to CBCGPEdit. This allows to utilize any advanced CBCGPEdit control features such as auto-complete (see screenshot). Please take a look at BCGPGridExample ("Auto-Complete" page) to see this feature in action.
  9. Controls:
    1. New class CBCGPCheckListBox implements checked list box control (see screenshot). The functionality of this control is similar to MFC's CCheckListBox, but it in addition our new control supports visual styles and other CBCGPListBox functionalities.
    2. Implemented disabled items support in CBCGPListBox control: 'Enable' and 'IsEnabled' methods were added.
    3. CBCGPEdit has built-in auto-complete mechanism (see screenshot). To implement it, simply add BCGM_EDIT_ON_FILL_AUTOCOMPLETE_LIST registered message handler to the edit control owner (or, alternatively, override OnGetAutoCompleteList method in your CBCGPEdit-derived class). Then simply return the list of strings matched to the edit context and the rest will be handled by the framework. Please take a look at our new sample program EditBoxDemo to see this feature in action and learn how to add it to your applications.
    4. Added Property Grid item state (see screenshot). New method CBCGPProp::SetState allows to specify the property state indication such as error. Please take a look at BCGPControls example to see this feature in action.
    5. CBCGPSliderCtrl supports tick marks now (see screenshot)
  10. Graphics Manager:
    1. New method CBCGPColor::ToString converts the color to a human-readable string.
    2. CBCGPTextFormat::SetFontFamily allows to modify the font family when a text object is already created,
  11. Miscellaneous:
    1. New class CBCGPGestureBase simplifies adding touch/gesture support to any CWnd-derived class.
    2. New method CBCGPWorkspace::CreateScreenshot prepares application (or any other visible window) screenshot. Please take a look at BCGPMSOfficeDemo example, "Info" Backstage page (see screenshot) where we illustrate how to display application window preview using this new method. In addition, all applications generated with the help of our AppWizard, have this preview by default.
    3. CBCGPTagCloud control has keyboard navigation support now.
    4. Added a new global method CBCGPChartVisualObject::UpdateAllChartsDefaultFont that allows to specify a font family name used for displaying chart axis, data labels, title and legend. (the default family name is "Calibri"). This name is stored in BCGPChartFormatLabel::m_strDefaultFontFamily variable.
    5. New virtual method CBCGPMDIFrameWnd::CreateMDITabGroup allows to customize MDI tabbed groups.
    6. Gauges: implemented Microsoft Active Accessibility support.
    7. CBCGPMessageBox has new global attributes:
      • m_bUseNativeControls: set it to TRUE if you want to use Windows native controls in the message box.
      • m_bUseNativeCaption: set it to TRUE if you want to use Windows native caption and border in the message box.
    8. Keyboard Manager: added ability to re-assign an existing keyboard shortcut. If you wish to keep an existing functionality (cannot assign keyboard shortcut if it was already assigned to the command), please call new global method CBCGPKeyboardManager::AllowReassign(FALSE).
  12. Examples and Samples:
    1. All Examples and Samples are in UNICODE now (VS 2010 or higher).
    2. New sample application EditBoxDemo shows how to create edit box control in the various modes (see screenshot).
    3. ResizableForm sample illustrates how to create property sheet control in the FormView (see screenshot).


  1. Added WM_PRINTCLIENT message handling to the most of our controls. This fixes bug with control rendering in the window animation and preview.
  2. CBCGPHeaderCtrl correctly supports HDS_FILTERBAR style.
  3. CBCGPGroup control correctly processes WM_GETFONT and WM_SETFONT messages.
  4. CBCGPGanttChart control correctly processes WM_GETFONT and WM_SETFONT messages.
  5. Fixed COleDataSource releasing bug: all COleDataSource objects are created on the heap and released using InternalRelease method.
  6. OLE in-place activation: fixed layout bug in the custom frame caption/border.
  7. CBCGPButton: fixed bug with a text default alignment in case of checkbox/radio button with BS_PUSHLIKE control style.
  8. Chart control: the chart doesn't show data labels for the empty data points now.
  9. CBCGPPropertySheetCtrl is correctly supports controls layout now.
  10. Disabled caption buttons such as "Minimize" or "Close" are correctly rendered in disabled state now under all visual managers.
  11. CBCGPPropertySheet: page navigation listbox control (used in PropSheetLook_List mode) is created with the vertical scroll bar now.
  12. CBCGPGridDateTimeItem: in-place date-time picker has a visual manager style now if the parent grid is themed.

Version 21.0. Released 08/08/2013

New features:

  1. The product was fully tested under Windows 8.1 Preview.
  2. The product is compatible with Visual Studio 2013 Preview (retail version only).
  3. Added a new class - CBCGPWinApp. This class is derived from CWinApp and simplifies creation of new applications. CBCGPWinApp provides developers with the following functionality:
    1. Automatic initializing Context Menu, Keyboard, Shell and Tooltip managers
    2. Switching between Visual Themes
    3. Associating Visual Theme with a specific menu/ribbon item.
    4. Auto-saving recent Visual Theme in the application registry branch.
    5. More simple toolbar/menu customization: you've to setup CBCGPToolbarOptions m_ToolbarOptions in the application class constructor and rest will be handled by the framework.
    6. Auto-cleanup framework data on exit. Important: deriving application class from CBCGPWinApp is not recommended for the existing application - please use this class in the newly created programs only.
  1. Ribbon Bar :
    1. Touch/Mouse input modes (see screenshot ). When you enable touch mode, there are a little more space around the ribbon icons and user will be able to easily access ribbon buttons on the touch screen. The following new methods were added to CBCGPFrameWnd, CBCGPMDIFrameWnd and CBCGPOleIPFrameWnd classes:
      1. SetInputMode - specifies a current input mode: mouse or touch.
      2. GetInputMode - returns a current input mode.
    2. Enhanced MSAA support.
    3. Added full keyboard navigation support to the Ribbon Designer tool.
  2. WinUITiles:
    1. The tile can be crates with the following sizes (see screenshot ):
      1. BCGP_TILE_REGULAR: square
      2. BCGP_TILE_WIDE: double width, single height.
      3. BCGP_TILE_DOUBLE_SIZE: double width, double height - similar to "large" tile introduced in Windows 8.1. Please take a look at WinUITilesDemo sample to see this feature in action.
  1. New method CBCGPWinUITiles::Remove allows to remove a specific tile, caption or caption button.
  2. Grid:
    1. Added ability to customize Field Chooser empty content label. The following new methods were added to CBCGPGridCtrl class:
      1. SetFieldChooserEmptyContentLabel
      2. GetFieldChooserEmptyContentLabel
    2. Added Visual Theme support in Field Chooser window (see screenshot ): ShowColumnsChooser has a new optional parameter 'BOOL bVisualManagerStyle = FALSE'
  3. Controls :
    1. Added Edit box/Combo box prompt and error messages. Please take a look at new sample 'FormValidation' (see screenshot ) that illustrates how to add prompt and validity indication to edit and combo boxes. The following new methods were added to CBCGPEdit class:
      1. SetPrompt
      2. GetPrompt
      3. SetErrorMessage
      4. GetErrorMessage
    2. Implemented seconds editing in CBCGPDateTimeCtrl (see screenshot ): DTM_SECONDS flag was added to the control properties.
  4. Gauge and Chart controls :
    1. Added scatter mode support in long-data series (see screenshot ). CBCGPChartLongSeries has a following new methods:
      1. SetScatterMode
      2. IsScatterMode
      3. GetScatterPointSize
    2. Chart: CBCGPChartTransitionFormula has a new built-in type - TT_DIFF_ABS. Use this type to absolute difference between the series.
    3. CBCGPSwitchImpl::SetOn has a new, optional parameter 'BOOL bRedraw = FALSE'. Set this parameter to TRUE to immediately redraw the control after the state changing.
    4. CBCGPSwitchImpl: implemented ability to specify custom images (see screenshot ). The following new methods were added:
      1. SetGutterImage
      2. GetGutterImage
      3. SetThumbImage
      4. GetThumbImage
    5. CBCGPSwitchImpl: added labels support. The following new methods were added:
      1. EnableOnOffLabels
      2. GetLabel
      3. SetLabel
      4. GetLabelTextFormat
      5. SetLabelTextFormat
    6. New class CBCGPImageGaugeCtrl provides you with a simple way to create an image control. The window simply hosts CBCGPImageGaugeImpl object.
  5. Visualization :
    1. Visual Studio 2012 theme: added VS2012_LightBlue style see screenshot). This theme is very similar to new VS 2012 Blue theme introduced in VS 2012 Update 3 and VS 2013 Preview.
    2. Improved Visual Studio 2012 theme: added custom scrollbars and Visual Studio 2012-style smart docking markers (see screenshot ).
    3. Most of built-in images were replaced by new, 32bpp images:
      1. Image editor (see screenshot )
      2. Task pane (see screenshot )
      3. Print preview toolbar (see screenshot )
  6. Graphics Manager :
    1. CBCGPGraphicsManagerD2D has a new static member 'm_bUseFontConversion'. The developer may set this flag to TRUE in order to convert GDI-compatible font family names (such as "Arial Narrow") to DWrite format.
    2. CBCGPTextFormat has a new method 'ExportToLogFont' - use it to export the text format data to LOGFONT structure
    3. Added method CBCGPGraphicsManager::DrawScatter that renders a large amount of points at once.
  7. Miscellaneous :
    1. Tooltip manager: added ability to specify tooltip delay values; the following new members were added to CBCGPToolTipParams class:
      1. m_nDelayAutoPop
      2. m_nDelayInitial
      3. m_nDelayReshow
      4. m_nDelayAutomatic
    2. When application is switched to the full-screen mode, the default registry branch is not changed now. If for some reasons you need to keep an old behavior (use a special full-screen branch), set a new global flag CBCGPFullScreenImpl::m_bUseFullScreenRegPath to TRUE.
    3. New method CBCGPToolBoxPage::UpdateImageList allows to replace toolbox page images.
    4. Improved Docking pane dividers behavior and appearance.


  1. Button control doesn't draw a focus rectangle if ODS_NOFOCUSRECT state is specified.
  2. Fixed problem with drawing check boxes/radio buttons with center/right text alignments.
  3. Dialogs, forms and property sheets: "white background" attribute is ignored in case of "dark" Visual Theme (such as VS 2012 Dark)
  4. Tab control: fixed tab "close" button location bug.
  5. Ribbon Backstage view correctly loads localized pages now ("Print" and "Recent").
  6. Ribbon Bar: fixed problem with initial size of backstage view scrollbars.
  7. CBCGPRibbonButton::SetMenu can receive a NULL menu.
  8. Pyramid Chart: fixed problem with incorrect gap calculation in the Chart print mode.
  9. Bubble Chart: the data labels are correctly positioned now in the Chart print mode.
  10. Property Sheet: fixed bug with height of the property sheet in 'PropSheetLook_Pointer' mode.
  11. Property Sheet: fixed problem in Wizard 97 mode (if visual theme is activated).
  12. Radial Menu: fixed rendering bug in Popup Mode (caused by IE10 update)
  13. Edit control: fixed bug with loading UNICODE files.
  14. Edit control: CBCGPBaseIntelliSenseLB::UpdateColors doesn't change the global colors now.
  15. Edit control: BCGP_EDIT_SYNTAX_COLOR structure is exported now.
  16. Tree control: fixed some control rendering bugs under specific Visual Managers.
  17. Grid control: grid color item with a default (without value) color is rendered correctly now.
  18. Grid control: fixed bug with Filter Bar localization.
  19. Grid control: fixed bug with serialization of CBCGPGridRow::m_dwData and CBCGPGridItem::m_dwData members that caused error in 64-bit.
  20. Outlook Bar: improved appearance of the bar splitter and borders under some Visual Themes.
  21. Toolbar: if ESC key was pressed while the floating toolbar is being resized, toolbar layout is correctly restored now.

Version 20.0. Released 03/11/2013

New features:

  1. Touch/Gesture support. We decided to implement extended gestures support for most of our controls. In addition, we've implemented easy to use, compact and intuitive Windows Gesture API wrapper, so you can add the touch support to your application in few lines of code. The following methods were added to CBCGPWnd and CBCGPBaseVisualObject classes:
    1. OnGestureEventZoom
    2. OnGestureEventPan
    3. OnGestureEventRotate
    4. OnGestureEventTwoFingerTap
    5. OnGestureEventPressAndTap
    6. ResetGestureOptions
    7. GetGestureConfig So, using our library, you can make your product fully compatible with Microsoft Surface and other touch-enabled devices!
  2. Implemented floating pane Maximize/Restore button (see screenshot ). You can enable this feature by calling a new methods CBCGPFrameWnd::EnableMaximizeFloatingBars or CBCGPMDIFrameWnd::EnableMaximizeFloatingBars. Please take a look at BCGPVisualStudioGUIDemo example to see this feature in action.
  3. Visualization:
    1. Implemented Office 2013-style Light Gray (see screenshot ) and Dark Gray themes (see screenshot ). CBCGPVisualManager2013 class has a new enumerator 'Style': Office2013_White, Office2013_Gray and Office2013_DarkGray. You can modify the current theme by calling a new method 'CBCGPVisualManager2013::SetStyle'.
    2. CBCGPVisualManagerScenic has a various styles now: default (OS-depended), Windows 7-like (see screenshot ) and Windo8 8-like (see screenshot ).
    3. CBCGPVisualManagerVS2012 allows to specify frame/caption bar custom colors: SetFrameColor, GetFrameColor and GetFrameTextColor method were added. Please take a look at WinUITilesDemo sample application to see this new feature in action.
    4. Improved look of the colored 3D tabs in CBCGPVisualManagerVS2012 and CBCGPVisualManager2013 (see screenshot ) visual managers.
    5. Added new navigation buttons for VS 2012 and Office 2013 visual managers (see screenshot ).
    6. Implemented themed scrollbars in the following controls:
      • CBCGPEditCtrl
      • CBCGPHotSpotImageCtrl
      • CBCGPTasksPane
    7. Date/time property grid control has a visual style now.
    8. Drop-down toolbar border is rendered using currently selected visual style now (see screenshot ).
    9. The following new virtual methods were added to CBCGPVisualManager class:
      • OnDrawTabsPointer: render "pointer"-style tab
      • GetTabPointerColor
      • GetNavButtonsID
      • GetNavFrameID
  4. WinUI Tiles (see screenshot ):
    1. Implemented custom views associated with a tile/caption button. Please call a new method CBCGPWinUITile::SetView to associate the tile with the custom view. By default, CBCGPVisualContainerCtrl window will be created, but you can use any CWnd-derived classes as tiles view. Please take a look at the following WinUITilesDemo tiles:
      • Settings (see screenshot ) and About (see screenshot ): illustrates tile-associated view created with help of Visual Designer.
      • Other tiles (see screenshot ): illustrates dynamically-created tile-associated view.
    2. Added keyboard navigation support. A new method CBCGPWinUITiles:: GetCurSel returns a currently selected tile and CBCGPWinUITiles:: SetCurSel allows to change the current selection.
    3. Implemented Group Captions in the WinUI Tiles control: call new method CBCGPWinUITiles::SetGroupName to specify the group name and other attributes such as text color or interactivity. The new registered message BCGM_ON_CLICK_WINUI_GROUP_CAPTION allows to catch group name mouse click event. Please take a look at WinUITilesDemo sample application to see this new feature in action.
    4. Added Navigation "Back Button". Call new method "CBCGPWinUITiles::EnableNavigationBackButton" to enable/disable the button and add new registered message BCGM_ON_CLICK_WINUI_NAV_BACK_BUTTON handler to catch click button event.
    5. Added custom caption buttons. AddCaptionButton method was added to CBCGPWinUITiles class. The new registered message BCGM_ON_CLICK_WINUI_CAPTION_BUTTON allows to catch caption button mouse click event.
    6. Implemented tiles scrollbar custom color theme: CBCGPWinUITiles:: SetScrollBarColorTheme allows to modify scrollbar color theme and CBCGPWinUITiles::GetScrollBarColorTheme returns the current theme.
    7. Added custom badge glyphs support. Please specify/obtain a tile custom badge index using new CBCGPWinUITile methods SetCustomBadgeIndex/GetCustomBadgeIndex and set custom image list using CBCGPWinUITiles::SetCustomBadgeGlyphs method.
  5. Chart Control:
    1. Added chart series shadow effect (see screenshot ). To enable shadow under the chart series, please fill BCGPChartFormatSeries::m_shadowType and call CBCGPChartSeries:: SetSeriesFormat method. Please take a look at BCGPChartExample demonstration program to see this feature in action.
    2. Implemented Pie and Polar charts interactivity.
  6. Diagram control:
    1. A diagram connector has line thickness and line style attributes now: SetThickness, GetThickness, SetStrokeStyle and GetStrokeStyle access methods were added to CBCGPDiagramConnector class.
    2. Added ability to specify a custom text format in Diagram Text Object: CBCGPDiagramTextDataObject::SetDefaultTextFormat was added.
  7. Tab Control:
    1. Implemented Office 2013 Pointer style (see screenshot ). Please use new CBCGPTabWnd style 'STYLE_POINTER' to activate this new look.
    2. Implemented animated tab activation (available with STYLE_POINTER style only). EnableTabAnimation and IsTabAnimationEnabled methods were added to CBCGPTabWnd class.
    3. CBCGPMDITabParams has a new member: m_bTabsCaptionFont. Set it to TRUE if you wish to display tabs with a "caption" (large) font. This feature may be useful in the touch-aware applications.
    4. Added custom fonts support.
  8. Ribbon Bar:
    1. Added support for a vertically-oriented Ribbon progress bar controls (see screenshot ). CBCGPRibbonProgressBar class has new access method: IsVertical. Please take a look at RibbonGadgets sample to see this feature in action.
    2. Ribbon Designer allows to specify key tips associated with a Ribbon Backstage view items.
  9. Graphics Manager:
    1. Added 'Underline' and 'Strikethrough' attributes to CBCGPTextFormat class. Also, we've updated CBCGPTextFormatDlg for changing these attributes (see screenshot ).
    2. Implemented luminosity compare in CBCGPColor class: CompareWith method and '<', '<=', '>', '>=' operators were added.
    3. Added 'Resize' method to CBCGPImage class.
    4. CBCGPGraphicsManager::SetDrawShadowMode specifies the "shadow" rendering mode. When this mode is on, all graphics manager objects will be rendered using semi-transparent brush with a specific offset.
  10. Outlook Bar:
    1. Improved control appearance in Office 2013 style (see screenshot ).
    2. Added ability to show/hide a caption area: EnableCaption/HasCaption methods were added to CBCGPOutlookWnd class.
    3. Added ability to show/hide a frame: EnableFrame/HasFrame methods were added to CBCGPOutlookWnd class.
  11. Dialogs:
    1. Added ability to drag a dialog box by clicking anywhere inside the dialog client area. EnableDragClientArea and IsDragClientAreaEnabled methods were added to CBCGPDialog class. This feature is especially useful when application is running in the touch-screen environment.
    2. CBCGPPropertySheet has a new style: PropSheetLook_Pointer (see screenshot ).
  12. Push Button:
    1. CBCGPButton has a new method 'SetAutoCheck'. Please call this method if you need to modify BS_AUTOCHECKBOX, BS_CHECKBOX, BS_RADIOBUTTON or BS_AUTORADIOBUTTON button style.
    2. Added a new attribute "DrawText": Call new method CBCGPButton::SetDrawText(FALSE) if you don't wish to display the text label (it may be useful in case of MSAA support when button should have an invisible name).
  13. Gauges:
    1. The following new gauge types are introduced in the version:
      • Switch control (see screenshot ). "On/Off" gauge - implemented in class CBCGPSwitchImpl.
      • Static Frame (see screenshot ). The simple frame gauge - implemented in class CBCGPStaticFrameImpl.
    2. Added new tick mark style 'BCGP_TICKMARK_TRIANGLE_INV' - "inverted" triangle tick mark (see screenshot ).
    3. Implemented ability to specify minor tick mark relative position: SetMinorTickMarkPosition and GetMinorTickMarkPosition methods were added to CBCGPGaugeImpl class.
    4. New SetScaleTickMarkOutlineBrush/GetScaleTickMarkOutlineBrush CBCGPGaugeImpl class methods allow to specify/obtain tick mark outline brush.
    5. Added 'DefaultDrawFlags' attribute to CBCGPStaticGaugeImpl class.
  14. Visual Container:
    1. Implemented scroll bars custom color theme: new optional parameter 'CBCGPVisualScrollBarColorTheme* pColorTheme = NULL' was added to CBCGPVisualContainer::EnableScrollBars method.
    2. Added copying of the multiple selections (using Ctrl key and mouse dragging). Use a new flag 'BCGP_CONTAINER_ENABLE_COPY' to activate this feature in CBCGPVisualContainer.
  15. Miscellaneous:
    1. Added user data support in CBCGPGridColumnsInfo class. Please call SetColumnData/ GetColumnData to set/get the user data associated with the specific grid column.
    2. CBCGPStatusBar::SetPaneAnimation method has a new, optional parameter 'BOOL bAlphaBlend'. Set this parameter to TRUE if you need to display 32-bit animation in the status bar pane.
    3. CBCGPPopupWndParams has a new Boolean variable: m_bOpenURLOnClick (default value is FALSE). Set this flag to TRUE if you wish to open URL specified by m_strURL value.
    4. Added help support to CBCGPMessageBox class: the developer can use MB_HELP style now to display "Help" button and specify help topic ID in dwContextHelpId member of BCGP_MSGBOXPARAMS structure.
    5. CBCGPKeyMapDlg constructor has a new, optional parameter 'BOOL bShowCommandsWithKeyOnly = FALSE'. Set this parameter to TRUE if you wish to display only commands associated with keys.
    6. CBCGPToolTipParams has 2 new members: m_nPaddingX and m_nPaddingY. You can customize tooltip appearance by modifying these attributes.
    7. CBCGPMDITabParams has new member 'm_bTabsCaptionFont'. Set it to TRUE if you wish to display MDI tab labels using "caption" (large) font.
  16. Changes in examples and samples:
    1. BCGPCalendarDemo: the calendar bar has a visual manager style now.
    2. BCGPChartExample: added chart shadows demonstration
    3. BCGPGaugesDemo:
      • New "Switch" view demonstrates usage of the new Switch gauge.
      • Added demonstration of the new minor tick marks position and style.
      • "Car Climate Control" view demonstrates how to create how to implement digital dashboard with the various type of gauges (see screenshot ).
    4. BCGPVisualStudioGUIDemo demonstrates how to implement floating pane maximizing (see screenshot ).
    5. BCGPOutlookDemo: added Office 2013 theme (see screenshot ).
    6. MDITabsDemo illustrates how to apply new tab features (such as new styles and fonts) to MDI tabs and MDI tabbed groups.
    7. PropSheetDemo: UI of this sample has been fully redesigned and has a new, fresh look now (Windows 8-style - see screenshot ). In addition, this sample demonstrates a new "PropSheetLook_Pointer" dialog look (see screenshot ) and property sheet embedded into the dialog (see screenshot ).
    8. RibbonGadgets:
      • Demonstrates how to add a vertically-oriented progress bars to the ribbon panel (see screenshot ).
      • Added some new themes (such as VS 2010 and VS 2012) to illustrate the Ribbon appearance under the various Visual Managers such as VS 2010/2012 and Carbon.
    9. TabControl: demonstrates how to create tab with a new 'STYLE_POINTER ' style, animated tab activation and custom font (see screenshot ).
    10. WinUITilesDemo: demonstrates new WinUI Tiles features such as views associated with tile, caption buttons and group Captions (see screenshot ).


  1. CBCGPGraphicsManagerD2D: WIC Imaging Factory is initialized properly now if the latest Windows SDK is used along with VS 2012 (Windows 7 and Vista only).
  2. Ribbon Bar: fixed bug with disabled menu button text color in some visual managers.
  3. Ribbon Bar: edit control "clear" button (used in the search mode) is not disabled anymore when project was built in VS 2010/2012.
  4. Ribbon Bar: tabs area had an incorrect color under Office 2010 theme when the application window was inactive (Windows "Classic" theme).
  5. Ribbon Bar: fixed problem ribbon sizing frame width (it was too wide in some systems).
  6. A skinned check box/radio button doesn't catch VK_RETURN key now.
  7. Frame/Dialog windows: fixed bug with recalculating layout if the window don't have WS_CAPTION style.
  8. Fixed problem with rendering CBCGPProgressCtrl created with PBS_VERTICAL style.
  9. Fixed some RTL drawing issues. The following controls are rendered correctly now when a window has WS_EX_LAYOUTRTL style: CBCGPScrollBar, Calendar Bar, Message Box, Tab Control and others.
  10. Fixed problem with CBCGPEdit rendering when control doesn't have WS_BORDER style.
  11. CBCGPPropertySheet preserves the selected tab/list item if OnKillActive method of the active page has returned FALSE.
  12. Chart Control: fixed bug with positioning of the 3D sides upon specific series gap values.
  13. CBCGPRadialMenuObject is correctly rendered now when display high contrast mode is active.
  14. CBCGPToolbarDateTimeCtrl class is DPI-aware now.
  15. Fixed bug with a frame/dialog with owner-draw NC area activation.
  16. CBCGPDrawManager::ColorMakeLighter correctly works now with very dark color (which close to black).

Version 19.0. Released 10/04/2012

New features:

  1. The product is fully-compatible with Visual Studio 2012 now! The evaluation version includes binary files for VS 2012 and Integration Wizard properly integrates the product with VS 2012 environment. Also, all our examples, samples and AppWizard were thoroughly tested with the new Visual Studio. The product Help file is compatible with Visual Studio 2012 Help System (MS Help Viewer 2.0) now.
  2. The product is fully tested under Windows 8 release.
  3. Implemented Office 2013 -style Visual Manager (see screenshot). A new class CBCGPVisualManager2013 was added to the library - just set this manager as active and your application will have a new, fresh Office 2013-style look. The key features of this style are:
    1. Flat, Windows 8-style UI
    2. Full-screen backstage view with a "back" circular button (see screenshot)
    3. Large docking pane and application frame captions
    4. Using accent color in the status bar, application button, backstage view and highlighted GUI elements.

    Please take a look at BCGPMSOfficeDemo example application to see this feature in action.

  4. CBCGPVisualManager2012 was adapted to Visual Studio 2012 RTM look (see screenshot):
    1. Implemented owner-draw captions and borders
    2. The status bar will be displayed with the accent background color.
    3. Fixed auto-hide buttons look.
    4. Colors, brushes and fonts are the same as in VS 2012 now.
  5. According to Microsoft request, the name "Metro UI" is not legal anymore, so we made the following changes in the product API:
    2. CBCGPMetroUITile -> CBCGPWinUITile
    5. CBCGPMetroUITiles -> CBCGPWinUITiles
    In addition, MetroUITilesDemo was renamed to WinUITilesDemo. IMPORTANT: if you're using Metro UI Tiles component in your application, please make all required renames in the code. Other WinUI Tiles changes:
    1. WinUITilesDemo demonstrates now how to create live tiles with Chart control and Circular Gauge (see screenshot).
    2. Added caption support to CBCGPWinUITiles class (see screenshot). The following methods were added:
      • SetCaption
      • GetCaption
      • SetCaptionForegroundColor
      • GetCaptionForegroundColor
      • OnDrawCaption

    Please take a look at WinUITilesDemo sample application to see these features in action.

  6. Ribbon Bar:
    1. Added Office-2013-like Ribbon background image support (see screenshot). The new method SetBackgroundImage was added to CBCGPRibbonBar class. Please take a look at BCGPMSOfficeDemo example to see this feature in action. Please note that you can see the background image only if CBCGPVisualManager2013 is active: in other Visual Managers this attribute is simply ignored.
    2. Implemented a new feature - Ribbon Quick Steps (see screenshot). The following 2 new classes were added: CBCGPRibbonQuickStepsButton -is a Ribbon Gallery in "Quick Steps" mode and CBCGPRibbonQuickStep -Quick Steps Gallery item. Please take a look at RibbonGadgets sample ("Galleries" tab) to see this feature in action.
    3. Added User Tools support to the Ribbon Bar (see screenshot). The behavior and usage are very similar to toolbar/menu user tools; to add user tools to your ribbon-based application, you need:
      • Initialize user tools manager: EnableUserTools (ID_TOOLS_ENTRY, ID_USER_TOOL1, ID_USER_TOOL10);
      • Add dummy button with ID = ID_TOOLS_ENTRY to the ribbon
      • Add "Tools" page to the customize sheet: CBCGPRibbonToolsPage pageTools(&m_wndRibbonBar); propSheet.AddPage(&pageTools);

      Please take a look at RibbonGadgets sample ("Buttons" tab) to see this feature in action.

    4. CBCGPRibbonComboBox:
      • Added sorting support. CBCGPRibbonComboBox has a new optional parameter 'sortOrder': BCGP_RIBBON_COMBO_SORT_ORDER_NO_SORT, BCGP_RIBBON_COMBO_SORT_ORDER_ASC or BCGP_RIBBON_COMBO_SORT_ORDER_DESC.
      • Added calculator display format: EnableCalculator method has a new optional parameter 'lpszDisplayFormat'
    5. The Ribbon Designer has the following enhancements and improvements:
      • Added sorting support for the combo boxes.
      • "Quick Steps" item in the designer toolbox: you can easily add and modify your Quick Steps gallery using the Ribbon Designer now.
    6. CBCGPRibbonCategory class has a new method: "CBCGPRibbonPanel* AddPanel (LPCTSTR lpszPanelName, const CBCGPToolBarImages& icons, int nIconIndex, CRuntimeClass* pRTI = NULL, int nInsertAt = -1)". Using this method instead of old which requires HICON you can reduce GDI system resources.
    7. Added ability to access Backstage View forms. CBCGPRibbonBackstageViewPanel has 2 new methods:
      • GetFormsCount: returns a number of forms attached to the backstage view.
      • GetForm: returns a form by index
  7. Visual Designer:
    1. Added keyboard support: the user is able now to move/resize the gauges/diagram objects using arrow keys.
    2. Status bar has 2 new panes: location and size of the currently selected gauge/diagram object (see screenshot).
  8. Grid Control:
    1. Implemented a long-awaited variable row height support (see screenshot). The following methods were added to grid classes:
      • CBCGPGridCtrl:: CreateMultiLineRow create a multi-line row with specified text lines numbers.
      • CBCGPGridRow:: SetLinesNumber allows to modify row text lines number.
      • CBCGPGridRow:: GetLinesNumber returns the row text lines number.

      Please take a look at BCGPGridExample to see this feature in action.

    2. New "Freeze Groups" feature allows to disable horizontal scrolling of groups in the grid control. A new method FreezeGroups was added to CBCGPGridCtrl class.
    3. Improved grid elements margin/padding calculations:
      • Hierarchy level offset is based now on a new method GetHierarchyLevelOffset.
      • A grid element height is calculated now using the following new methods: GetBaseHeight and GetButtonWidth.
      • The following new methods for customization of the mouse wheel scrolling were added: SetMouseWheelSmoothScrollLimit and GetMouseWheelSmoothScrollLimit
  9. Chart Control:
    1. Added chart thumbnail mode (see screenshot). SetThumbnailMode/IsThumbnailMode methods were added to CBCGPChartVisualObject class. Please take a look at BCGPChartExample demonstration program ("Chart Thumbnails" view) to see this feature in action.
    2. Added a new Data Label content type - LC_DP_INDEX. This type is useful if chart has a lot of overlapped wide labels (such as in Pie or Funnel chart types). Simply specify the label format as index and display names/values left of the index value in the chart legend (see screenshot). Please take a look BCGPChartExample demonstration program ("Pie/ Doughnut/Torus" views) to see this new feature in action.
    3. CBCGPChartSeries class has a new flag 'm_bIncludeInvisibleSeriesToLegend'. Set it to TRUE if you wish to display the hidden series entry in the chart legend.
    4. Implemented user-defined data support in CBCGPChartSeries: GetUserData/SetUserData methods were added.
  10. Gauges:
    1. CBCGPImageGaugeImpl: added image alignment support. SetImageAlign, GetHorizontalAlign and GetVerticalAlign methods were added to this class.
    2. CBCGPStaticGaugeImpl: added 'opacity' attribute. You can modify the static gauge (such as image, text or color indicator) opacity by calling new method SetOpacity or get it by calling GetOpacity.
    3. CBCGPStaticGaugeImpl:: added fill/outline brush attributes. SetFillBrush/GetFillBrush and SetOutlineBrush/GetOutlineBrush methods were added.
    4. CBCGPCircularGaugeImpl has a new helper method: GetSubGaugeByID(UINT nID).
  11. Miscellaneous changes :
    1. CBCGPPropertySheet: implemented tabs scrolling support in PropSheetLook_Tabs mode: EnableTabsScrolling/ IsTabsScrollingEnabled methods were added.
    2. CBCGPTabWnd: implemented full-size scroll buttons. SetScrollButtonFullSize and IsScrollButtonFullSize methods were added.
    3. CBCGPPropList: added support for implementing mouse events in the property groups. The following virtual methods were added to CBCGPProp class: OnClickGroupArea and OnRClickGroupArea
    4. Added new global flag "CBCGPGraphicsManagerD2D::m_bForceSoftwareRendering". If you set this member to TRUE on your application startup, the render targets will use software rendering only. This may be helpful if computer doesn't have updated DirectX drivers.
    5. CBCGPWorkspace has new methods for an instant reading/writing double numbers: GetDouble/ WriteDouble.
  12. Improved French, German and Italian translations.


  1. Fixed bug with layout of BCGControlBar Pro Application Wizard for Visual Studio 2005/2008/2010/2012 pages when the wizard is used in non-English Visual Studio versions.
  2. Resolved flickering upon tab switching in CBCGPPropertySheet
  3. Ribbon bar: the Ribbon customization page correctly shows the hidden categories and allows to show/hide them.
  4. Ribbon bar: fixed problems with displaying some Ribbon popup windows (such as calculator or gallery) in RTL mode.
  5. Ribbon bar: a ribbon button placed on the status bar with a dark background (for example, Office 2010 Black or Carbon theme), has a correct foreground color now.
  6. Ribbon bar: fixed bug with scroll bar flickering in CBCGPRibbonGalleryCtrl window
  7. Fixed bug with displaying skinned disabled edit control.
  8. Resolved problem with drawing some gauges such as text or digital indicators after container scrolling.
  9. An active MDI child windows is checked now in Ribbon MDI children menu.
  10. Fixed bug with closing active MDI child windows when Ctrl+F4 is pressed and mouse cursor is located on the docking pane/floating mini-frame caption button.
  11. MDI Tab is correctly process Ctrl+Tab / Ctrl + F6 if the newly activated tab was previously invisible and tab documents menu is used.
  12. CBCGPTabbedControlBar: if user detaches a pane from the tabbed control bar which contains 2 panes only, an unused tabbed control bar doesn't stay in memory and tabbed pane properly released now.
  13. Grid control: if EnableFilterBar method was called more than once, a memory leak was occurred.
  14. Grid control: improved mouse wheel scrolling behavior.
  15. Grid control: fixed drawing bug of checkbox item in some visual themes.
  16. Grid control: fixed drawing bug of expand box in HDPI mode.
  17. CBCGPColorDialog: a "pick color" mode is canceled now when application is being deactivated.
  18. CBCGPMessageBox: fixed bug with closing message box when embedded check box is clicked.
  19. CBCGPVisualManagerCarbon: improved appearance of the Grid push button and menu caption GUI elements.
  20. CBCGPVisualManagerCarbon: fixed bug with a drawing control border.
  21. Fixed bug with multi-minframe layout: the frame does not leave an empty space now after user detaches the second pane and only one embedded pane remains inside the frame.
  22. CBCGPFontProp::OnClickButton doesn't fire OnPropertyChanged method now if user didn't change the font attributes in CFontDialog.
  23. Fixed bug with serializing a document-related CObject returned by overridden CBCGPMDIChildWnd::GetDocumentName method: in the previous product version MRU documents state wasn't correctly loaded if the object wasn't NULL.
  24. Diagram control: fixed scaling bug.
  25. Diagram control: fixed bug with a drawing of multi-point connectors.
  26. Chart control: CBCGPChartAxis::ValueFromPoint returns a correct value now when the logarithmic scaling is used.
  27. Fixed some problems with drawing frame/dialog borders in various Visual managers.

Version 18.0. Released 06/27/2012

New features:

  1. Added support for Visual Studio 2012 RC . The product was thoroughly tested under this new environment and all tests were passed.
  2. The product is fully tested on Windows 8 Release Preview .
  3. CBCGPVisualManagerVS11 class was renamed to CBCGPVisualManagerVS2012. Except rename, we made the following changes in this visual manager:
    • The color scheme is identical to Visual Studio 2012 Release Candidate (see screenshot).
    • Added support for the dark theme in the editor (see screenshot) and other controls.

    You can run BCGPVisualStudioGUIDemo and BCGPControls examples to examine this look.

  4. Added a new Metro style Tiles control (see screenshot), which implements the following features:
    • Square and wide tiles.
    • Tile groups.
    • Rectangular or rounded tile shapes.
    • Horizontal ("Landscape") or vertical ("Portrait") layouts.
    • Tile headers and multi-line texts.
    • Tile images.
    • Numeric and iconic badge support.
    • "Live" tiles with image animation effects.
    • Custom colors and brushes.
    • Custom tiles.
    • OS-independent: since our implementation just emulates Windows 8 Metro style Tiles, you can use the our Metro Tiles control under all supported operating systems!

    This control is fully-customizable, so you can use it with your own images, textured brushes and custom shapes (see screenshot).

    The Metro Tiles control is suitable for the wide range of user interfaces such as application start page, activity monitor and many others. Please run the new MetroUITilesDemo sample to see the new control in action.

  5. Ribbon Control has a long-awaited MS Office 2010-like customization (see screenshot). Please run BCGPMSOfficeDemo example to see this feature in action. The Ribbon customization includes:
    • Show/hide all default Ribbon tabs and panels.
    • Change Ribbon tabs and panels order.
    • Create custom tabs and panels.
    • Rename tabs, panels and commands.
    • Modify custom command image.
    If you wish to add the Ribbon Customization to your application, please make the following minor additions in your source code:
    1. Call m_wndRibbon.EnableCustomization() ; (prior call to m_wndRibbonBar.Create())
    2. If your QAT customization dialog is embedded into the property sheet (e.g., "Options"), you've to add CBCGPRibbonCustomizeRibbonPage object to this property sheet too.
    3. WPARAM value of BCGM_ON_RIBBON_CUSTOMIZE message specifies now which Ribbon part will be customized:
      • 0 - Customize QAT.
      • 1 - Customize Ribbon.
  6. Chart Control implements the following New features:
    • Added advanced legend (see screenshot). Using this new component, you can add the following chart legend features:
      • Ability to show legend entries from multiple charts.
      • Custom entries support.
      • Custom legend title.
      • Custom legend cell format (including colors and text label formats).
      • Custom columns.
      • Vertical and horizontal layouts.
      • Automatic scrolling.
      • Print and print preview support.
      • Mouse events support allows to create an interactive legend entries (such as buttons or checkboxes).
      • Ability to show the legend in any window such as Visual Container, docking pane or any others.
      • CBCGPChartView class integration (call EnableAdvancedLegend method).

      Please take a look at BCGPChartExample application ("Chart Advanced Legend" view) to learn how to use this new component. In general, you've to instantiate CBCGPChartLegendVisualObject object (if you're using the legend inside CBCGPVisualContainer) or create CBCGPChartLegendCtrl window and add related chart(s) using CBCGPChartLegendVisualObject::AddRelatedChart method.

    • Texture-based custom themes. Since CBCGPBrush is working now with texture images, you can easily create your own, nice-looking custom themes! You can assign textures to the chart series, walls, plot area and legend. Please run BCGPChartExample application, choose a "Custom Theme (Textures)" in "Theme" toolbar combo box and examine a new fresh look! The following screenshots are illustrating how the various chart type may look with the new textured brushes:
    • New method CBCGPChartCtrl::DoPrint simplifies printing support if the chart is created inside dialogs or forms.
    • Added method CBCGPChartTheme::PrepareWallBrushes. Call this method to assign a single brush for all 3D chart wall and floor objects with automatic lighting/shading.
  7. Grid Control additions:
    • Added active accessibility support for the grid and report controls.
    • New class CBCGPGridCaptionRow was added for the grid control (see screenshot). To add the caption please call new CBCGPGridCtrl::AddCaptionRow method. This class can be used to separate the contents of the grid. Please see the usage in BCGPGridExample program at "Cell Types" tab.
    • Added support for the currency values.
    • New options to customize inactive selection color in the grid. See new members m_SelColorsInactive and m_GroupSelColorsInactive in CBCGPGridColors class.
    • New option BCGP_GRID_FINDREPLACE_PARAM::bStartWith extends the find/replace mechanism.
    • New virtual method CBCGPGridRow::CanSelect allows to skip some rows while navigating by keyboard in the grid.
    • New method method CBCGPGridCtrl::SetExportTextSeparator allows to customize some exporting settings.
    • New following helpers were added: CBCGPGridCtrl::IsItemInRange, CBCGPGridCtrl::IndexToOrder, CBCGPGridCtrl::CreateCaptionRow.
  8. Graphics Manager:
    • Added textured brushes support. The following new methods were added to CBCGPBrush class:
      • New constructor CBCGPBrush(const CBCGPImage& image, const CBCGPColor& clrFillAlt, BOOL bIsWaterMarkImage)
      • GetTextureImage
      • HasTextureImage
      • IsWaterMarkImage
      • SetTextureImage
      • ClearTextureImage
    • CBCGPColor has new attributes IsDark() and IsLight().
    • Added new drawing methods to CBCGPGraphicsManager class: DrawCheckBox and DrawRadioButton.
  9. Visualization and Skins:
    • Added skins support to CBCGPWindowsManagerDlg (see screenshot).
    • New class CBCGPTreeCtrl implements a tree control with the Visual Manager support (see screenshot). CBCGPShellTree class is derived from CBCGPTreeCtrl, so your can apply the skin to the shell tree now.
    • CBCGPVisualManager has the following new methods:
      • IsMinFrameCaptionBold: returns TRUE if mini-frame caption text is bold
      • OnFillComboBoxItem: allows to customize combobox item appearance
      • GetListControlFillBrush and GetListControlTextColor
      • GetTreeControlFillColor and GetTreeControlTextColor
      • GetEditCtrlBackgroundBrush and GetEditCtrlTextColor
      • OnFillGridCaptionRow
    • Added Visual Manager support to CBCGPBreadcrumb and CBCGPListCtrl classes.
  10. Miscellaneous additions:
    • Added active accessibility support for the calendar control.
    • BCGPDiagramDemo and BCGPGaugesDemo illustrates how to use texture brushes in the diagram and gauge controls (see screenshot).
    • CBCGPProgressDlgParams has a new member 'BOOL m_bWaitForMessages'.
    • New static member CBCGPMessageBox::m_bDontUseDefaultIcon allows enable/disable a message box icon.
    • CBCGPKeyMapDlg is working properly in the Ribbon-based application now.
    • CBCGPMDIFrameWnd and CBCGPFrameWnd classes have a new method 'ClosePrintPreview' which allows to programmatically close print preview view.
    • New class CBCGPDiagramView implements a view with embedded diagram control.
    • BCGPGLOBAL_DATA has a new method 'SetWindowTheme'.
    • CBCGPBrushButton has a new public member 'CBCGPEditBrushOptions m_Options'. You can customize CBCGPEditBrushDlg invoked by the button appearance now.
    • CBCGPButton::SetStdImage has a new optional parameter 'CBCGPMenuImages::IMAGE_STATE stateDisabled'.
    • CBCGPFrameWnd and CBCGPMDIFrameWnd classes have a new method EnableFullScreenAutoHideTaskbar which allows to show auto-hide taskbar when the full-screen mode is active.
    • Added method 'CBCGPBaseControlBar::HideInFullScreenMode'. Override this method if you wish to keep control bar visible in the full-screen mode.


  1. Chart control: improved 3D charts rendering performance.
  2. Chart control: fixed problem with drawing Pyramid chart when all data points have zero value.
  3. Chart control: fixed some problems with the small-sized chart layout calculation.
  4. Grid control: CBCGPGridCheckItem doesn't change a value when the space button was pressed in the read-only mode.
  5. Grid control: collapse/expand buttons of the groups are not scrolled in freeze columns mode.
  6. Grid control: Fixed colors in some visual themes.
  7. Grid control: fixed scrolling by keyboard.
  8. Grid control: CBCGPGridCtrl::GetSelectedItems does not return hidden or filtered items now. CBCGPGridCtrl::IsItemSelected is fixed.
  9. Grid control: fixed bug with auto closing the in-place edit on scrolling. Now the grid auto-saves changes and closes the in-place editor before scrolling.
  10. Grid control: CBCGPGridCtrl::EnsureVisible is working correctly now.
  11. Header control: fixed some redrawing issues: the control doesn't call RedrawWindow if the windows is not created yet.
  12. CBCGPShellList is working correctly now when control is created with a style differ from LVS_REPORT.
  13. CBCGPPropList: fixed bug with dynamic changes of the commands visibility.
  14. CBCGPButton::UncheckRadioButtonsInGroup doesn't check invisible button now.
  15. Radial menu: fixed icon drawing bug. In some cases the icon was drawn "blurred".
  16. CBCGPEdit: appearance of the control in the Visual Manager mode has been improved.
  17. CBCGPToolTipCtrl::GetIconSize correctly calculates a Ribbon custom icon size.
  18. Fixed some bugs with re-loading recent size and position of the dialogs and property sheets.
  19. Resolved some performance issues in MDI tabs and MDI tabbed groups.
  20. Fixed bug with nested redrawing in CBCGPCalendar::RecalcLayout method.
  21. CBCGPListBox created with LBS_NOSEL style is working correctly now.
  22. Fixed bug with the splitter window in full-screen mode.
  23. Diagram: fixed bug with connectors positioning when the diagram scrolling/zooming was performed.
  24. Help: fixed style problems in help files for Visual Studio 2005/2008/2010.

Version 17.1. Released 04/02/2012

New features:

  1. Added support for Visual Studio 11 Beta .
  2. Added a new class CBCGPVisualManagerVS11, which implements Microsoft Visual Studio 11 Beta look (see screenshot). Using this new theme, you can upgrade your application look to a new Metro-style UI in one line of code! As you probably know, Visual Studio 11 UI doesn't have any color-full GUI elements, so all toolbar/menu/docking pane icons by default are converted to grayscale. If you wish to keep your color-full icons unchanged, just set CBCGPVisualManagerVS11::m_bAutoGrayscaleImages to FALSE. The new visual manager has 2 color themes:
    • Light (default)
    • Dark

    In addition, a developer can set a theme accent color. By default, all highlighted/focused elements have a blue color, but you can change it according to your preferences (see screenshot). Please run BCGPVisualStudioGUIDemo example to examine this new fresh look!

  3. The library is fully tested on Windows 8 Consumer Preview operating system.
  4. Chart Control implements new and updates existing features:
    • Missing data support. Call CBCGPChartVisualObject::AddChartEmptyData or CBCGPChartSeries::AddEmptyDataPoint to add empty data points. Call CBCGPChartSeires::SetTreatNulls to tell a series how to treat missing data (as values, skip, or don't paint). This feature is supported for line, area, column, bar, bubble, point, ternary and stock charts.
    • Support for "smart labels" (see screenshot). This feature intelligently lays out data labels preventing overlapping. Call CBCGPChartVisualObject::EnableSmartLabels to enable or disable this feature (now it's enabled by default for supported chart types). Call CBCGPChartVisualObject::SetSmartLabelsParams to fine tune the "smart labels" algorithm. This feature is supported for line, area, point, bubble and ternary charts.
    • Stock chart can display data as a line based on open, high, low, close or custom calculated value. You can call CBCGPChartStockSeries::SetStockSeriesType with newly added SST_ types to set the desired stock series type. Call CBCGPChartStockSeries::SetCustomStockValueCallback or override GetCustomStockValue method in a derived class to return custom calculated stock values when you set SST_LINE_CUSTOM type.
    • Added a new method CBCGPChartAxis::UpdateSplitAxisSizeByPercent enabling you to adjust sizes of split axes programmatically.
    • Added two new color themes: "Black and Green" (CT_BLACK_AND_GREEN - see screenshot) and "Black and Blue" (CT_BLACK_AND_BLUE - see screenshot).
  5. Diagram Control implements new and updates existing features:
    • Added zoom support for diagram, all diagram shapes and connectors support proportional scaling.
    • Improved features for runtime editing of diagram. See new DiagramEditor sample (see screenshot).
    • Implemented copy/paste support for the diagram editors.
    • Added support for drag and drop connectors and shapes in edit mode.
    • Added shapes coloring. The following new shapes properties were added to CBCGPDiagramVisualObject class:
      • GetFillBrush/SetFillBrush
      • GetOutlineBrush/SetOutlineBrush
      • GetShadowBrush/SetShadowBrush
    • Added connectors and connector arrows coloring. The following new properties were added to CBCGPDiagramConnector class:
      • GetOutlineBrush/SetOutlineBrush
      • GetArrowOutlineBrush/SetArrowOutlineBrush
      • GetArrowFillBrush/SetArrowFillBrush
    • Implemented new shape types:
      • Image item - CBCGPDiagramImageObject class
      • Table shape - CBCGPDiagramTableShape class.
    • A new class CBCGPDiagramCustomShape implements custom shapes support.
    • Helper diagram's entity "ConnectionPoints" was renamed to "ConnectionPorts".
    • The method CBCGPDiagramVisualObject::SetTextValue was renamed to CBCGPDiagramVisualObject::SetTextData for consistence. You can see the New features: in action in the new sample DiagramEditor and modified example BCGPDiagramDemo.
  6. Added a new TreeMap control (see screenshot). The Treemap is a space-constrained visualization of hierarchical structures. It shows attributes of leaf nodes using size and colors. Please take a look at new TreeMapDemo sample to see this control in action.
  7. Message Box:
    1. The look of the product message boxes was significantly improved: the area behind buttons is painted by Visual Manager using shading effects (see screenshot). If a developer prefers the old look, it's possible to set a new member BCGP_MSGBOXPARAMS::bDrawButtonsBanner to FALSE. In addition, we've improved the multi-line text layout for better appearance.
    2. For your convenience displaying of optional check box can be done with a single line of code: BCGPMessageBox and BCGPMessageBoxEx methods have now 2 new optional parameters:
      • LPCTSTR lpszCheckBoxLabe // Check box label (such as "Don't show this message again")
      • BOOL* pCheckBoxResult // IN/OUT: check box initial state and result

      Please take a look at MessageBoxDemo sample to see these features in action.

  8. Progress Dialog:
    1. Implemented "infinite" progress: if you don't know how long the process can take, but wish to show some "working indication" without creating a custom animation, just set CBCGPProgressDlgParams::m_bShowInfiniteProgres to TRUE (see screenshot):
    2. Improved dialog appearance.
  9. Graphics Manager:
    1. Added scaling support for the following graphics classes:
      • CBCGPPoint
      • CBCGPRect
      • CBCGPRoundedRect
      • CBCGPEllipse
      • CBCGPGeometry
      • CBCGPTextFormat
    2. Implemented printing support: SetPrintInfo/GetPrintInfo methods were added.
  10. Visual Control and Visual Container:
    • Added scroll support to visual container: CBCGPVisualContainer::EnableScrollBars enables/disables container scroll bars. A new virtual method OnScroll was added to CBCGPBaseVisualObject class.
    • Added "click and hold" support to CBCGPBaseVisualCtrl class. The following new methods were implemented to support this feature:
      1. GetClickAndHoldID
      2. GetClickAndHoldRect
      3. StartClickAndHold
      4. StopClickAndHold
      5. OnClickAndHoldEvent
    • Added printing support. Just call CBCGPBaseVisualCtrl::DoPrint or CBCGPBaseVisualCtrl::DoPrint method to print your visual container/control content.
    • Implemented user data support in CBCGPBaseVisualObject class: GetUserData/SetUserData methods were added.
    • Improved multiple-selection mode in CBCGPVisualContainer:
      1. SelectAll method was added.
      2. Implemented 2 different "hit testing inside selection" behaviors: SetHitTestSelected and IsHitTestSelected methods were added.
      3. Added FireSelectionChangedEvent virtual method and BCGM_CONTAINER_SELCHANGED registered message
  11. Ribbon Bar
    • Added support for mini-toolbar tooltips (see screenshot). If a developer wants to disable them, it's possible to set new BCGPGLOBAL_DATA::m_bShowTooltipsOnRibbonFloaty member to FALSE.
    • CBCGPRibbonBar has a new virtual method 'OnFilterSearchResult'. If you wish filter-out command search results (don't display certain commands), override this method and return FALSE for specific search results.
    • CBCGPRibbonMainPanel::EnableCommandSearch method has new optional parameter BOOL bHideDisabled = FALSE that allows to filter-our disabled commands in the search result pane.
  12. Visual Designer
    • The designer supports now both gauges and diagrams (see screenshot)
    • Implemented multi-selection and element alignment operations.
  13. Grid control
    • Added ability to disable grid lines in the grid: new CBCGPGridCtrl::EnableGridLines method.
    • Added CBCGPGridCheckItem::SetLabel method to set text label for the grid check item.
  14. Calendar (Planner) control
    • Added ability to scroll all-day events in the calendar header area.
    • Added multi-line (word wrapping) support for the multi-hour appointments.
  15. Miscellaneous additions
    • CBCGPDrawManager line, arc and ellipse drawing methods have a new optional parameter: int nPenStyle = PS_SOLID.
    • Added support for auto-graying toolbar, menu and docking pane images (see BCGPVisualStudioGUIDemo example, VS 11 application look):
      1. CBCGPDrawState has a new public member m_bAutoGrayScale (default is FALSE)
      2. CBCGPDrawState constructor has new optional parameter bAutoGrayScale (default is FALSE)
      3. CBCGPToolBarImages::ConvertToGrayScale() method was added
      4. CBCGPGlobalUtils::GrayIcon method was added
      5. CBCGPVisualManager has a new virtual method 'IsAutoGrayscaleImages()'
    • CBCGPVisualManager has the following new virtual methods:
      1. OnDrawControlBarCaptionText
      2. OnFillPropList
      3. GetPropListDisabledTextColor
      4. OnDrawButtonsArea
      5. GetDlgButtonsAreaBrush
      6. IsDrawFocusRectOnPushButton
    • CBCGPProgressCtrl supports PBS_MARQUEE style now.
    • CBCGPProp has a custom float/double reading formats now: CBCGPProp::m_strScanFormatFloat and CBCGPProp::m_strScanFormatDouble static members were added.
    • Added scaling support to CBCGPTagCloud control.
    • CBCGPMDITabParams has a new member: m_bActiveTabBoldFont
  16. Examples and samples
    • BCGPChartExample has the following additions:
      1. Stock chart ("Stock Charts | Stock") demonstrates new StockSeriesType types (line drawn by OHLC and custom values) (see screenshot).
      2. Added demonstration of real time stock chart in virtual mode ("Stock Charts | Stock Real Time").
      3. Added "Advanced Features | Smart Data Labels" view, which illustrates the "smart labels" feature.
      4. Added Print/Print preview support to each view.
    • BCGPCalendarDemo demonstrates header (all-day events) scrolling now.
    • Added skins support to BCGPControls example (see screenshot)
    • BCGPDiagramDemo demonstrates diagram Zoom In/Zoom Out features.
    • BCGPMSOfficeDemo demonstrates how to add Grid and Chart docking panes in the MS Office-style application (see screenshot).
    • BCGPVisualStudioGUIDemo demonstrates Visual Studio 11 themes.
    • The following new samples were added:
      1. DiagramEditor demonstrates how to edit the Diagram Control.
      2. TreeMapDemo: demonstrates new TreeMap control.


  1. Chart control: when an axis works in "fixed interval mode" the interval size is not adjusted anymore to fit the plot area size. Instead, the last interval can be truncated and displayed partially.
  2. Chart control: fixed problem with label interlacing when axis becomes too small.
  3. Pie chart correctly displays very small slices.
  4. Chart control: fixed printing (and scaling) issues with axes in "fixed interval" mode.
  5. Chart control: fixed printing issues with legend size.
  6. Chart control: split axes (when you split an axis to two axes using CBCGPChartAxis::Split) take correct size.
  7. Chart control: fixed labeling and zooming issues with date-time axes.
  8. Chart control: fixed layout of radar chart.
  9. Grid control: fixed bug with alignment of merged cells.
  10. Grid control: mouse click was disabled for a grid check item (CBCGPGridCheckItem) in read-only mode
  11. Grid control: fixed bug with selection border.
  12. Property Sheet: fixed bug with redrawing non-client area when the property sheet is skinned and a developer changes the currently activated visual manager or DWM composition is being changed.
  13. Fixed bug with Ribbon caption font size in CBCGPVisualManager2007/CBCGPVisualManager2010 visual managers.
  14. When application doesn't have an icon and application caption is custom, the default Windows application icon is displayed now.
  15. CBCGPPropList::DeleteProperty corretly resets selected/tracked property now.
  16. Property list embedded scroll bar is created with the corresponding (property list) visual style.
  17. Property list correctly handles VK_TAB keystroke if WS_TABSTOP style is applied to the control.
  18. Fixed scrolling bug in CBCGPPropList::EnsureVisible
  19. Fixed drawing bug in CBCGPListBox when control has a horizontal extent.
  20. CBCGPRibbonBackstagePagePrint scales correctly the default "Print" image in the high DPI mode.
  21. Fixed bug with image margins in the high DPI mode in CBCGPToolTipCtrl.
  22. CBCGPToolTipCtrl correctly handles TTS_BALLOON style after control is created.
  23. Fixed bug with the global (toolbar/menu/ribbon) font size in some Eastern-Asian OSs.
  24. CBCGPButton doesn't draw unnecessary focus rectangle in some visual managers now.
  25. Fixed bug with drawing CBCGPEditListBox button area (a correct visual manager background color is used now).
  26. CImagePaintArea doesn't fill extra space on the control right and bottom sides.
  27. CBCGPComboBox correctly draws drop-down button in all Windows themes now.
  28. If application frame is in full screen mode, CBCGPRibbonBar::ShowBackstageView deactivates it first.
  29. CBCGPGraphicsManagerGDI draws lines, arcs and ellipses with a pen style different from PS_SOLID using anti-aliasing methods.

Version 17.0. Released 01/23/2012

New features:

  1. Added the long awaited Diagram Control (see screenshot), which implements the following features:
    • Ability to add unlimited number of diagram shapes and connectors.
    • Various predefined diagram blocks, including circles, triangles, boxes, rounded boxes, parallelograms, trapezoids, stars and clouds.
    • Table diagram block.
    • Text labels inside diagram blocks.
    • Smart straight and curved diagram connectors with 5 types of customizable arrows.
    • Interactive diagram editing.
    • Ability to save and load diagram to/from XML.
    • Copy diagram image to the Clipboard.
    • Save diagram image to a file.
    • Please run the new BCGPDiagramDemo example to see the new control in action.
  2. Chart Control implements new and updates existing features:
    • Axis scale breaks (see screenshot). Call CBCGPChartAxis::EnableScaleBreaks to enable this feature for an axis. Scale breaks can be generated automatically or added manually. See the updated BCGPChartExample | Advanced Features | Scale Breaks for more info.
    • Added new chart category - Histogram. Use the new BCGPChartHistogram category and CBCGPChartHistogramSeries class to create series of this type.
    • Implemented two new technical indicators for Stock charts (see screenshot): Bollinger Bands and MACD. Use CBCGPChartBollingerBandsFormula and CBCGPChartMACDFormula classes to add these indicators to Stock charts.
    • Stock charts are optimized to handle very large data. Call CBCGPChartStockSeries::AddData and pass a CArray of CBCGPChartStockData objects to quickly initialize a stock series with market data.
    • Now stock series are working in "index mode" mode by default. It means that data points are accessed by index, but X axis displays labels according to date stored in the X component of data point. Important note. Do not call CBCGPChartAxisX::SetFixedDisplayRange with date/time values, use data point indexes instead.
    • Now you can create virtual stock series by overriding only three methods: IsOptimizedLongDataMode (should return TRUE), GetDataPointCount (should return the total number of data points in a stock series) and GetStockDataAt , which should return the data obtained from external source.
    • Line, Area, Column, Bar and Histogram series can handle very large volumes by trading off the ability to customize individual data point properties. Call CBCGPChartSeries::AddDataPointsOptimized or CBCGPChartVisualObject::AddDataPointsOptimized with array of double values to add a batch of data points. Take a look at BCGPChartDemo | Large Volume Charts | Huge Data to see this feature in action.
    • CBCGPChartAdvancedFormula output series now takes advantage of "optimized long data" feature, which allows to increate performance and reduce memory consumption. Set CBCGPChartAdvancedFormula::m_bUseLongData to FALSE before creation of output series to use "regular" data points.
    • Added support for tooltips (see screenshot). Call CBCGPChartCtrl::EanbleTooltip to enable tooltips for a chart control. You can override CBCGPChartSeries::OnGetDataPointTooltip to customize tooltip text for a specific data point. You can override CBCGPChartVisualObject::OnGetToolTip to customize a tooltip displayed at specified client coordinates.
    • You can customize series fill opacity by calling BCGPChartFormatSeries::SetSeriesFillOpacity .
    • Added new notifications about axis zoom and scroll actions: chart control's owners will receive BCGM_ON_CHART_AXIS_ZOOMED and BCGM_ON_CHART_AXIS_SCROLLED messages. Also you can override OnAxisZoomed and OnAxisScrolled overrides in CBCGPChartVisualObject.
    • CBCGPChartAxis has two new members m_szMaxFixedLabelSize and m_strMaxDisplayedLabel . The first member allows to specify maximal axis label size (in pixels), which won't be overridden by internal calculations. The second allows to specify a label whose size will be used as maximal label size.
    • Output series type encapsulated in CBCGPChartAdvancedFormula can be customized by overriding of GetOutputSeriesType and GetOutputSeriesCategory methods.
    • CBCGPChartObject has a new coordinate mode CM_PIXEL_FIXED_SIZE. Now you can add objects of fixed size to the diagram area and specify object size and position in pixels.
    • CBCGPChartLongSeries has a new method GetNearestScreenPoint, which calculates position for interactive markers.
    • Chart View correctly handles Windows 7 task bar interaction.
    • Pan mode correctly scrolls different series displayed on different axes.
  3. Property Grid Control implements the following new features (see screenshot):
    • Added new property classes: CBCGPBrushProp , CBCGPTextFormatProp and CBCGPLineStyleProp. These classes allow to represent in a property list control the brush, text format and line style compound properties.
    • Property list control can display context menu with predefined and custom options. Call CBCGPPropList::EnableContextMenu to enable or disable this feature. Call SetCustomMenuItems to add custom menu items to the context menu.
    • Added ability to display a built-in toolbar with predefined commands. Call CBCGPPropList::EnableToolbar to show the toolbar with "Categorized" and "Alphabetical" commands. Also you can make this toolbar displaying custom buttons.
    • Added ability to display a built-in search box. Call CBCGPPropList::EnableSearchBox to show the search box.
    • Added property copy/paste operations.
    • CBCGPColorProp by default displays D2D color palette. If you wish to use previous (system, 20 colors) palette, set constructor parameter 'bUseD2DColors' to FALSE.
    • New method CBCGPColorProp::SetColors allows to dynamically modify the color palette.
    • Properties can be identified by property ID, therefore a CBCGPProp object can be constructed with ID. Added a new method CBCGPPropList::FindItemByID and several update methods (UpdateProperty, UpdateBrushProperty etc.).
    • Added new methods that simplify the property grid usage:
      1. CBCGPProp::SelectOption: selects property options by index
      2. CBCGPProp::GetSelectedOption: gets a selected option
      3. CBCGPPropList::GetPropertyValue: returns the property value
      4. CBCGPPropList::EnableProperty: enables/disables property
      5. CBCGPPropList::SelectPropertyOption: selects the property option
    • You can see the New features: in action in the new sample PropertyGridMDIDemo (see screenshot) and modified example BCGPControls.
  4. Ribbon Bar
    • Added "Clean up unused images" feature to the Ribbon Designer.
    • Added Recent File Form for Backstage View (see screenshot). This view includes recent file list and recent folder lists. Each list has ability to pin/unpin recently used files/folders. You can easily add this form to your Backstage View using new CBCGPRibbonBackstageViewPanel::AddRecentView/AttachRecentViewToItem methods.
    • CBCGPRibbonRecentFilesList (Office 2007-style) has ability to pin/unpin recently used files (see screenshot). CBCGPRibbonRecentFilesList constructor has a new, optional parameter 'BOOL bShowPins = FALSE'.
    • CBCGPBaseRibbonElement::NotifyCommand method is virtual now.
    • New methods CBCGPFrameWnd::CloseRibbonBackstageView and CBCGPMDIFrameWnd::CloseRibbonBackstageView allows to programmatically close backstage view.
    • Enhanced Ribbon Bar backstage view support. The following new methods were added to CBCGPRibbonBar class:
      1. ShowBackstageView(CRuntimeClass* pViewClass);
      2. ShowBackstageRecentView();
      3. SetDefaultBackstagePage(int nPage);
      4. GetDefaultBackstagePage();
    • CBCGPRibbonHyperlink::OpenLink method is virtual now.
    • Added method 'CBCGPRibbonStatusBar::ReplaceElementByID'
  5. Added a new Tag Cloud control (see screenshot). This control is a visual representation for text data ("tags") and the importance of each tag is shown with font size or color. The control implements the following features:
    • Unlimited number of tags.
    • Alphabetical sorting.
    • Sorting by value.
    • Customizable text color.
    • Customizable text format.
    • Tooltip support.
  6. Toolbars and Menus
    • Added new virtual method CBCGPToolBar::OnLargeIconsModeChanged
    • Improved some issues in toolbar/menu bar accessibility support.
    • Added new virtual method CBCGPToolbarButton::OnClickUpOutside
  7. Visual Designer for Gauges (see screenshot )
    • Now you can create top-quality digital dashboards using the new WYSIWYG design tool in minutes!
    • Arrange gauges on the design surface and change their properties.
    • Save your dashboard to XML and load it in a C++ application.
    • See the updated BCGPGaugesDemo to learn how to integrate designed dashboards with your application.
  8. Graphics Manager
    • CBCGPGeometry supports 2 filling methods now: alternate or winding. GetFillMode/SetFillMode methods were added to this class.
    • New static method CBCGPColor::CreatePalette creates palette from the colors array.
    • CBCGPColor::GetRGBArray returns colors array in order suitable for displaying in 14-columns grid (see screenshot).
    • CBCGPBrush has '==' operator now.
    • Added CBCGPBrush::SetOpacity method.
    • CBCGPTextFormat: added character set support. This class has a new constructor and GetCharSet and CharSetToLocale new methods.
    • CBCGPGraphicsManager::CleanResources has new, optional parameter 'BOOL bDetach'. Setting this parameter to TRUE allows to detach graphics resources from the manager.
    • Added content scaling support: CBCGPGraphicsManager has new methods: SetScale/GetScale
  9. New controls and dialogs
    • CBCGPEditBrushDlg (see screenshot) allows to edit CBCGPBrush properties.
    • Added Line style combobox control - CBCGPLineStyleComboBox
    • Added Brush button - CBCGPBrushButton
    • CBCGPTextFormatDlg (see screenshot) allows to edit CBCGPTextFormat properties.
  10. Tab control enhancements
    • Added support for the various tab close button modes. The following modes are supported now:
      1. TAB_CLOSE_BUTTON_NONE: no close button
      2. TAB_CLOSE_BUTTON_ACTIVE: close button is displayed on the active tab only
      3. TAB_CLOSE_BUTTON_HIGHLIGHTED_COMPACT: close button is displayed on the active and highlighted tabs. The space for the close button on non-active tab is not reserved.
      4. TAB_CLOSE_BUTTON_HIGHLIGHTED: close button is displayed on the active and highlighted tabs.
      5. TAB_CLOSE_BUTTON_ALL: closed button is displayed on all tabs.

      New method CBCGPTabWnd::SetTabCloseButtonMode allows to specify the tab close button mode.

    • CBCGPMDITabParams has a new member 'm_closeButtonMode'. Set this parameter to specify MDI tabs close button appearance.
  11. Gauges
    • CBCGPColorIndicatorImpl has new constructor where you can specify background brush.
    • CBCGPTextGaugeImpl has new constructor where you can specify background brush.
    • CBCGPBaseVisualObject has new virtual method 'OnMouseDblClick'
    • CBCGPVisualContainer has new methods 'GetByID' and 'LoadFromFile'
  12. Grid control
    • New method CBCGPGridCtrl::EnableGridLines is used to disable grid lines in the grid control.
    • New method CBCGPGridCheckItem::SetLabel allows to draw text label inside checkbox-item.
  13. Miscellaneous additions
    • CBCGPMemDC has new, optional parameter 'dblScale'. You can create the memory DC with ability to scale it.
    • BCGPGLOBAL_DATA has new method 'ChangeWindowMessageFilter' - ChangeWindowMessageFilter function wrapper.
    • Improved CBCGPButton's focus rectangle appearance when control is located on Aero ("glass") area.
    • CBCGPColorBar has new static method 'GetColorName' which returns color name by value.
    • Added mouse tracking in CBCGPDateTimeCtrl parts such as check box or calendar drop-down button.
    • CBCGPDrawManager has new method 'DrawFocusRect' which allows to draw focus rectangle on Aero.
    • CBCGPInplaceToolTipCtrl utilizes Visual Manager tooltip drawing now.
    • Added pin, description and separator support for CBCGPListBox. The following new methods were added to CBCGPListBox class:
      1. EnablePins
      2. HasPins
      3. EnableItemDescription
      4. HasItemDescriptions
      5. SetItemDescription
      6. SetItemPinned
      7. IsItemPinned
      8. ResetPins
      9. AddSeparator
      10. IsSeparatorItem
      11. OnClickPin
      12. OnClickItem
      13. OnReturnKey
    • Added method CBCGPOutlookBarPane::RemoveButtonByIndex.
    • Added keyboard navigation to CBCGPColorPickerCtrl in hexagon mode.
    • CBCGPVisualManager has following new methods:
      1. OnFillPropListToolbarArea
      2. OnFillPropertyListSelectedItem
      3. OnDrawPropListComboButton
      4. OnDrawPropListPushButton
      5. GetPinSize
      6. OnDrawPin
      7. OnFillRibbonPinnedButton
      8. OnDrawRibbonPinnedButtonBorder
  14. Examples and samples
    • BCGPChartExample has the following additions:
      1. "Advanced Features | Scale Breaks" illustrates the new "scale breaks" feature.
      2. "Large Volume Charts | Huge Data" demonstrates the performance of "optimized long data mode".
      3. "Large Volume Charts | Huge Average Data" shows how to add interactive markers to BCGPChartLongData chart.
      4. "Large Volume Charts | Virtual Chart" describes the technique required to create virtual charts, where the data is taken from an external source.
      5. "Stock Charts" demonstrate new technical indicators.
    • BCGPGaugesDemo shows how load dashboard from the Visual Designer data file.
    • BCGPGridExample show how to create grid control with watermark image (see screenshot).
    • The following new samples were added:
      1. BCGPDiagramDemo: demonstrates how to use new Diagram Control.
      2. PropertyGridMDIDemo: demonstrates new property grid features and how to use the property grid in MDI application.
      3. TagCloudDemo: demonstrates new Tag Cloud control.


  1. CBCGPCircularGaugeCtrl::CreateCustomGauge correctly updates control owner now.
  2. Fixed bug with image transparency in CBCGPEdit::SetBrowseButtonImage method.
  3. CBCGPGraphicsManagerD2D::DrawText correctly draws text in non-UNICODE applications now.
  4. Tabbed MDI windows can't be shrunk beyond minimum size.
  5. MDI child window with embedded split window correctly exits from Print Preview mode.
  6. CBCGPRibbonEditCtrl::OnKillFocus doesn't notify owner when user click embedded "clear" button.
  7. CBCGPRibbonPanel::GetElementsByName don't add to collection ribbon application buttons now.
  8. Fixed bug in CBCGPGridCheckItem with SPACE button. Disabled CBCGPGridCheckItem does not modify state of the checkbox on pressing SPACE.
  9. Fixed bug in the grid with painting the selection border in virtual mode.
  10. Fixed bug in CBCGPGridCtrl::FindRowByData. The second parameter bSearchSubItems is used properly now.
  11. Fixed bug with grid item drag and drop. The click at the button inside the grid item does not start dragging now.
  12. Fixed bug in CBCGPGridCtrl::SetCurSel with selecting all content. The grid with no selected item processes "SelectAll" command properly now.
  13. Radar chart correctly displays categories.
  14. Fixed a problem when a chart axis was incorrectly truncated because of incorrectly specified scroll range (CBCGPChartAxis::SetScrollRange). Now a larger scroll range can't be overridden by smaller range. To reset a scroll range and specify smaller values reset it by calling SetScrollRange without parameters.
  15. 3D charts correctly display axis names (now they are aligned to axes and rotated with chart).
  16. Fixed infinite loop in CBCGPChartAxis::ApproximateValue.
  17. Fixed incorrect calculation of axis scrollbar thumb.
  18. Polar X axis correctly handles ValueFromPoint requests.
  19. CBCGPChartCtrl::CreateCustomChart automatically sets an owner of newly created chart visual object.
  20. Interline coloring effect is correctly clipped when chart is zoomed in.
  21. Chart in history mode does not display empty data point at the last X coordinate.
  22. CBCGPChartHistoricalLineSeries displays history from X = 0 (it was 1 in previous version).

Version 16.1. Released 10/17/2011

New features:

  1. The product is ready for Windows 8! All product functionalities were thoroughly tested under Windows 8 preview. Few minor bugs addressed to Windows 8 have been fixed and we confirm that our product is ready for use in this new operating system.
  2. Visual Studio 2011 Developer Preview support. For your convenience we added project/solution files for Visual Studio 2011, so if you begin porting your projects to the new Visual Studio, our library is ready for this. Also, we've updated our Integration Wizard - now it includes support VS 2011. Please note that Visual Studio 2011 support currently is available for the retail version only.
  3. Chart Control implements new and updates existing features:
    • Enhanced custom axis support. Now you can add a custom axis using CBCGPChartAxis::Split method at the top or at the bottom of the axis being split (see a new optional parameter bCustomAxisAtTop).
    • Added a new method CBCGPChartVisualObject::RemoveCustomAxis.
    • Added a new axis cross type CBCGPChartAxis::CT_FIXED_DEFAULT_POS, which makes an axis to be fixed at its default position at the edge of plot area.
    • Created infrastructure for custom financial indicators:
      • A new CBCGPChartAdvancedFormula class can be used as a base class for custom indicators.
      • CBCGPChartSeries::GetDataBuffer allows to store intermediate calculations for each data point in a series. You can allocate unlimited number of buffers.
    • Implemented several technical indicators in the following new classes:
      • CBCGPChartMAFormula implements moving averages (simple, exponential, smoothed, linear weighted)
      • CBCGPChartStochasticFormula implements Stochastic Oscillator
      • CBCGPChartRSIFormula implements RSI indicator (smoothed, exponential, simple). Please take a look at CBCGPChartExample | Stock Chart to see the new indicators and custom axis support in action (see screenshot).
    • Added "Manhattan Stacked Column" chart type (see screenshot). To enable this kind of charts you have to use the new CBCGPChartDiagram3D::SetExplicitGrouping method.
    • CBCGPChartExample | Advanced Features | Custom Axis illustrates how to add a standalone custom axis (see screenshot).
  4. Grid Control implements the following New features:
    • The following methods are virtual now:
      • CBCGPGridCtrl::StartSelectItems
      • CBCGPGridCtrl::SelectItems
      • CBCGPGridCtrl::StopSelectItems
    • Added a new optional parameter bUpdate to CBCGPGridCtrl::EnableFilterBar method.
  5. Ribbon Bar
    • Added new method 'CBCGPRibbonBar::ShowBackstageView' that allows to programmatically show a specific backstage view page. Also, you can call a new method 'CBCGPRibbonBar::ShowBackstagePrintView' to show the backstage print page.
    • Method CBCGPRibbonBar::AddPrintPreviewCategory is virtual now, so you can customize the Ribbon print preview appearance and functionality.
  6. Graphics Manager
    • CBCGPGraphicsManager::CreateInstance has a new optional parameter: CBCGPGraphicsManagerParams* pParams. Using this new parameter you can specify the target DPI, alpha mode and rendering type.


  1. Escape key is correctly handled during interactive resize of the chart custom axes.
  2. CBCGPChartAxis::Split correctly splits multiple axes.
  3. CBCGPRibbonBar::LoadFromVSRibbon correctly loads ribbon bar from VS ribbon resource under VS 2010/2011.
  4. Fixed problem with appearance of 32 bit images in CBCGPBaseVisualCtrl::OnDrawLayeredPopup under Windows 8.
  5. Fixed problem with incorrect circular gauge shape in specific scale angles.
  6. Fixed some painting bugs in MDI tabbed groups.
  7. Fixed problem with Grid Filter bar drawing in "freeze columns" mode.
  8. Pressing 'Alt' key correctly activates application menu bar under Windows 8.
  9. Now CBCGPButton::m_clrFace is used when a button has a Visual Manager theme.

Version 16.0. Released 07/26/2011

New features:

  1. Toolbar Editor The new utility Toolbar Editor (see screenshot ) allows you easily create and manage application toolbars. You can add toolbar buttons, create and edit toolbar button images for various color modes and screen resolutions and associate buttons with command IDs.
  2. Chart Control has been extended with the following new 3D chart types:

    The new 3D charts support software and hardware (OpenGL-based) rendering. You can see the new chart types in action in the updated CBCGPChartExample. Also, please visit our new Charts Gallery and see how many professional and nice-looking charts you can create using our toolkit.

  3. Ribbon Bar implements the following new and updated features:
    • Ribbon Designer allows to update an existing image now.
    • Added several methods that allow to modify the existing ribbon elements:
      1. CBCGPRibbonPanel::Replace
      2. CBCGPRibbonPanel::ReplaceByID
      3. CBCGPRibbonPanel::ReplaceSubitemByID
      4. CBCGPRibbonBackstageViewPanel::AttachPrintPreviewToItem
    • The MSAA support for the Ribbon was improved.
    • A ribbon button can be added to QAT as a checkbox or radio button. Call the new method CBCGPRibbonButton::SetQATType to specify if the ribbon button should appear on QAT as checkbox or radio button. If you're using Ribbon Designer, you can set this property in the button properties grid.
  4. Grid Control implements the following New features:
    • Multi-line text support for grid header items (see screenshot): word wrapping, understanding "\r\n" line breaks, multiline in-place editor, horizontal and vertical align, printing. Please take a look at BCGPGridExample to see this feature in action.
    • Added ability to subclass the default grid header by overriding the virtual GetColumnsInfo() function. You can learn how to extended a grid header with two header lines and merged header items in BCGPGridExample, "Multi-Line Header" tab.
    • Added ability to animate a content of a grid item - see BCGPGridExample, "Cell Types" tab.
  5. Gauge components have the following new interactive controls:
    • Knob (see screenshot )
    • Radial menu (see screenshot )
    • Rotation control (see screenshot )
    • Analog clock (see screenshot ) (in previous versions this control was implemented in example code).
    • Added gauges tooltip support.
    • Added interactive gauge support:
      • SetInteractiveMode/IsInteractiveMode methods were added to CBCGPGaugeImpl class.
      • New structure CBCGPGaugeTrackingData contains the gauge tracking data such as last tracking message, screen point and current gauge value.
    • CBCGPLinearGaugePointer has the following new styles:

    Using these new controls and features you can easily create fully-functional, interactive digital dashboards. Please run BCGPGaugesDemo to see these features in action.

  6. Toolbars and Menus
    • Menu bar Popup mode (see screenshot). Now the application menu can be hidden by default and shown when the user presses Alt or F10 keys (like in Interned Explorer or Windows Explorer interface). All that you need to do to enable this feature is to call CBCGPMenuBar::EnablePopupMode(TRUE). Please run a new sample PopupMenuBar to see this feature in action.
    • New virtual method CBCGPToolbarButton::GetKeyboardAccelerator allows to customize the appearance of keyboard accelerator label.
    • CBCGPPopupMenu has a new method: GetSafeActivePopupMenu - returns the active popup menu in the current UI thread.
    • Toolbar Image editor correctly works with 32bpp toolbar images now.
  7. Docking Panes
    • CBCGPFrameWnd/CBCGPMDIFrameWnd::EnableControlBarContextMenu has a new, optional parameter 'bIncludeRebarPanes'. Setting this parameter to TRUE allows to include embedded rebar panes (such as toolbars or dialog bars) to the docking pane context menu.
    • CBCGPCaptionBar has a new method 'SetMessageBarMode'. Using this method developer can switch between "message bar" (Office 2007/2010-like) and "classic" modes at run-time.
  8. Calendar and Planner
    • Added working interval support: CBCGPPlannerManagerCtrl::SetViewHourInterval and CBCGPPlannerManagerCtrl::SetPrintHourInterval method were added.
    • Added ability to customize "Up"/"Down" icons
  9. Graphics Manager
    • CBCGPImage can be initialized from HICON and HBITMAP now
    • Added method CBCGPGraphicsManager::DrawBeveledRectangle
  10. Dialogs
    • BCGP_MSGBOXPARAMS has a new member 'bIsChecked'. You can set it to TRUE and show the message box check box checked by default.
    • Improved appearance of CBCGPDialogBar embedded into the Rebar pane.
  11. Windows 7 Taskbar interaction support was extended - the following new methods were added to CBCGPFrameWnd and CBCGPMDIFrameWnd classes:
    • SetTaskBarProgressValue
    • SetTaskBarProgressState
    • SetTaskBarOverlayIcon
    • SetTaskBarOverlayIcon
    • ClearTaskBarOverlayIcon

    Please take a look at new sample TaskBarDemo to see this feature in action.

  12. Examples and samples
    • For your convenience, all examples and samples were prepared for Visual Studio 2010. Please open MakeExamplesVS2010.sln and MakeSamplesVS2010.sln solutions to build them without conversion in Visual Studio 2010 environment.
    • WordPad example was fully redesigned and looks now like Windows 7 WordPad application (see screenshot). In addition, we illustrate how to switch between toolbar-based and Ribbon-based interfaces at the runtime.
    • BCGPChartExample illustrates new 3D charts.
    • BCGPGaugesDemo shows how to create the new knob and radial menu gauges.
    • BCGPMSOffice2007Demo has been replaced with BCGPMSOfficeDemo, because now the demo illustrates Microsoft Office 2010 features as well.
    • BCGPIE7Demo has been replaced with BCGPInternerExplorerDemo and demonstrates how to implement the latest features found in Microsoft Internet Explorer 9 using BCGControlBar library.
    • BCGPExplorer was moved to "Examples" group
    • The following new samples were added:
      1. PopupMenuBar: demonstrates menu bar in popup mode.
      2. TaskBarDemo: demonstrates Windows 7 Taskbar features such as thumbnails, preview, overlay icons and others.
      3. RebarDemo: demonstrates integration with the Windows rebar control.
      4. TearOffMenu: demonstrates detachable ("tear-off") menus.
      5. CaptionBarDemo: demonstrates MS Office-like caption bar.
      6. DropDownToolbarDemo: demonstrates toolbar button with dropped-down menu box.
      7. MenuQuestionBox: demonstrates Office 2003-like menu question box.


  1. Fixed some problems in Chart Control.
  2. CBCGPMainClientAreaWnd::OnEraseBkgnd doesn't perform MDI client area drawing in case of MDI tabbed groups.
  3. Fixed problem with drawing CBCGPBreadcrumb on the DWM aero area.
  4. Fixed problem with drawing CBCGPScrollBar on the DWM aero area.
  5. CBCGPEdit::OnDrawBrowseButton correctly draws disabled button images now.
  6. CBCGPOutlookBar doesn't load the tab names from the registry. This allows to rename Outlook bar text labels without cleaning the registry application branch.
  7. Fixed some bugs in Full Screen mode.
  8. Fixed some minor visual problems in high DPI and high contrast display modes.
  9. Fixed memory/resource leak in graphics manager gradient brush initialization.
  10. Fixed a problem with a push button text color in CBCGPVisualManagerCarbon.
  11. CBCGPLinearGaugeImpl: fixed some problems with gauge appearance under Windows XP (in GDI mode).
  12. Fixed some problems with Outlook bar appearance in CBCGPVisualManager2010
  13. Improved drawing of the Ribbon context category label in CBCGPVisualManager2010
  14. CBCGPMaskEdit: fixed some minor problems with VK_HOME/VK_END behavior.
  15. CBCGPToolBarImages::Load correctly loads 32bpp images from file now.
  16. Fixed bug with displaying incorrect value in CBCGPCalculator::UpdateDisplay.
  17. Fixed bug with processing Ribbon combo and edit boxes in CBCGPRibbonMainPanel::OnSearch.
  18. CBCGPToolbarComboBoxButton closes drop-down list when application menu bar is being active now.
  19. Ribbon backstage view correctly processes VK_HOME keyboard accelerator when edit box located on the view is focused.
  20. Fixed bug in CBCGPDlgImpl::LoadPlacement/SavePlacement: the dialog location is restored correctly now when the Windows task bar is located on the left or top side.
  21. Fixed typo in CBCGPToolTipCtrl: m_strDesrciption member was renamed with m_strDescription.

Version 15.1. Released 02/24/2011

New features:

  1. Chart Control:
    1. The following new chart types were added:
    2. Added support for logarithmic scales of any base (see screenshot).
    3. Added trend line support with the following built-in approximations (see a new class CBCGPChartTrendFormula):
      1. Linear
      2. Exponential
      3. Logarithmic
      4. Power
      5. Polynomial of order 2 - 6 (see screenshot).
    4. Transition (formula) support (see screenshot) has been implemented in a new class CBCGPChartTransitionFormula. It can take several input series and generate data points using either built-in transitions (sum, diff, multiply, divide, average etc), or custom transitions (you can specify a callback implementing a custom formula).
    5. Virtual series (see screenshot) support allows to display any custom function on the diagram.
    6. "Chart Objects" feature (see screenshot) allows you to add annotation and other objects (like lines or colored zones) to a Chart or diagram. The following new classes were added for this feature:
      1. CBCGPChartObject
      2. CBCGPChartLineObject
      3. CBCGPChartRangeObject
      4. CBCGPChartTextObject
      5. CBCGPChartAxisMarkObject.

      The main Chart controller (CBCGPChartVisualObject) provides the following helpers to allow you to add Chart Objects quickly using the following methods: AddChartObject, AddChartTextObject, AddChartLineObject, AddChartRangeObject and AddChartAxisMarkObject.

    7. "Chart Effects" feature enables you to add interline coloring effects to a diagram (see screenshot). See new classes CBCGPChartBaseEffect, CBCGPChartInterLineColoringEffect.
    8. Axes can display scroll bars (see screenshot). Use two new methods ShowScrollBar and SetAlwaysShowScrollBar defined in CBCGPChartAxis, or helpers defined in CBCGPChartVisualObject: ShowScrollBar (enables scroll bar for a given axis) and ShowScrollBars (enables scroll bars for all axes).

    Please take a look at BCGPChartExample program to see these features in action.

  2. Linear Gauge (see screenshot) has been added to the Gauges collection: the new class CBCGPLinearGaugeImpl implements the linear gauge. Please take a look at BCGPGaugesDemo to see the gauges in action.
  3. Added ability to save/load Dialogs and Property Sheets window placements. The following methods have been added:
    1. CBCGPDialog::EnableLoadWindowPlacement
    2. CBCGPPropertySheet::EnableLoadWindowPlacement

    Please take a look at ResizableForm sample program to see this feature.

  4. Ribbon Bar additions:
    1. Added new static method CBCGPRibbonPaletteButton::ClearLastSelectedItem.
    2. Added method CBCGPRibbonBar::OnBeforeShowContextMenu.
  5. Grid additions:
    1. Added Find support - the following new methods have been added to the CBCGPGridCtrl class:
      • OpenFindReplaceDlg
      • CloseFindReplaceDlg
      • Find
      • OnPrepareFindString
      • OnTextNotFound
      • OnTextFound

      Please take a look at BCGPGridExample to see this feature in action.

    2. Added a new virtual method 'CBCGPGridCtrl::OnAfterInplaceEditCreated which is called right after the in-place edit has been created.
  6. Added MS Active Accessibility support to CBCGPBaseTabWnd class.


  1. Fixed problem with middle mouse button click on MDI Tab.
  2. The text color of the floating toolbar caption is properly defined now in all Visual Managers.
  3. The color popup has a correct location now when it positioned on top of the parent color button.
  4. Fixed problem with saving edit text on the popup ribbon panels.
  5. If Windows task bar in auto-hide mode, the Ribbon-based application is correctly calculates the maximized size now.
  6. MDI Tab keeps the tab custom color when user moves tab from one group to another.
  7. CBCGPGridCheckItem now can print a check mark.
  8. Fixed painting of the right side of the grid header.
  9. Fix in CBCGPGridCtrl::OnLButtonUp for disabled grid items.
  10. Fixed a problem with drawing rotated texts using CBCGPGraphicsManagerGDI.
  11. Fixed some visual problems problem with Ribbon bar/Backstage view in the high contrast mode.
  12. CBCGPEdit correctly draws browse button images when the edit control is disabled.
  13. Fixed problem with drawing dates with year less than 1900 in CBCGPDateTimeCtrl and CBCGPCalendar under VS 2005 and higher.
  14. Fixed problem with scrolling popup menu using mouse wheel.
  15. Fixed some problems in Chart Control.
  16. CBCGPVisualManager2007::DrawNcText correctly draws application caption with the ampersand.

Version 15.0. Released 12/08/2010

New features:

  1. New Chart Control (see screenshot) - the most advanced and professional chart on the MFC market today! This chart control offers a wide range of the different chart types:
    • Line
    • Area
    • Bar and Column
    • Pie
    • Pyramid
    • Funnel
    • and lot of others!

    Please browse our Feature Tour for the full list of the chart features and take a look at the new example BCGPChartExample to see the Chart in action.

  2. New Gauge Controls (see screenshot). The library implements various types of gauges that help a developer to create high-quality, fast and beauty digital dashboards. The following gauge types are implemented:
    • Circular Gauges.
    • Numeric Indicators.
    • Color Indicators.
    • Text Labels.
    • Image Indicators

    Please browse our Feature Tour for the full list of gauge features and take a look at the new example BCGPGaugesDemo to see the gauges in action.

  3. Added D2D support. A new class 'CBCGPGraphicsManagerD2D' implements D2D backend. It exposes various methods for easy access to D2D and DirectWrite interfaces. All graphics primitives like lines, rectangles, ellipses, geometries, arcs, pies, pyramids and texts can be easily drawn with D2D speed and quality using just few lines of code. Also we added a new class 'CBCGPGraphicsManagerGDI', which can be used on OSs that do not support D2D (for example, Windows XP or Windows 2000). The base class CBCGPGraphicsManager automatically creates GDI manager if it detects an older OS (where D2D is not supported).
  4. Office 2010-style Print Preview (inside Backstage View - see screenshot). 'CBCGPRibbonBackstageViewPanel::AddPrintPreview ' method has been added. Please take a look at BCGPMSOffice2007Demo to see how it's easy to add this feature to your application.
  5. New Editor language schemes (see screenshot). Outline parser customization was extended. Added new Lexeme::m_dwData, BlockType::m_dwData members. Extended LexemType enumerator. BCGPVisualStudioGUIDemo example demonstrates how to implement the following schemes using new mechanism:
    • C++
    • HTML
    • BASIC
    • Pascal
    • C#
    • Assembler
    • XML
    • SQL
  6. Added drop-down galleries (see screenshot). New class CBCGPRibbonComboGalleryCtrl allows to create drop-down galleries on dialogs in ribbon-based applications. Please take a look at RibbonGadgets sample ("Galleries" tab) to see how to add various galleries in a dialog.
  7. The ribbon bar is integrated with VS 2010 Ribbon Editor: call new method 'CBCGPRibbonBar:: LoadFromVSRibbon' to load ribbon bar form RT_RIBBON resource.
  8. Added description to CBCGPButton (see screenshot): CBCGPButton::SetDescription/ CBCGPButton::GetDescription methods have been added. Take a look at BCGPControls example ("Buttons" page) to see this new button style.
  9. CBCGPRibbonPanel: added SetName method.
  10. CBCGPRibbonStatusBarPane constructor has a new, optional parameter 'bAlphaBlendIcon'. Set it TRUE if 32-bit icon is being added to the status bar pane.
  11. Grid changes:
    • The class CBCGPGridItemID has new state {m_nRow = -2, m_nColumn = -2} which indicates the selection of the whole content. New methods: CBCGPGridItemID::SetAll, CBCGPGridItemID::IsAll. CBCGPGridItemID::IsNull was modified.
    • CBCGPGridItem::Init and CBCGPGridItem::SetFlags are now virtual.
    • Added CBCGPGridCtrl::IsColumnBeingResized function.
    • Added option to disable quick sorting. To return to the previous ("bubble") sorting implementation please use new CBCGPGridCtrl::m_bUseQuickSort member.
    • Added CBCGPGridCtrl::NormalizeSelectionList, CBCGPGridCtrl::RemoveSelectedRows, CBCGPGridCtrl::Delete, CBCGPGridCtrl::IsDeleteEnabled functions.
    • Added mechanism to customize colors alternating. Please override virtual BOOL OnAlternateColor (const CBCGPGridItemID& id) to specify if an item has odd or even color.
    • Improved performance of the grid with many columns. Changed implementation of CBCGPGridColumnsInfo class, changed the internal column's container.
  12. Changes in Examples and Samples:
    • Added a new example BCGPChartExample that demonstrates Chart features.
    • Added a new example BCGPGaugesDemo that demonstrates Gauges features.
    • Added a new sample 'RibbonMenuSwitch' - this sample demonstrates how to switch between Ribbon and Menu/Toolbar mode at run-time.
    • BCGPGridExample has been updated to illustrate how to create a Chart within a merged cell.
    • SideBarDemo now illustrates how to add a circular gauge (clock) and chart (weather forecast) to Side Bar (see screenshot).


  1. CBCGPRibbonKeyboardCustomizeDlg doesn't show separators in the command list now.
  2. CBCGPDateTimeCtrl doesn't show drop-down calendar if control is disabled.
  3. Fixed problem with accessibility navigation and a default action in CBCGPToolBar and CBCGPRibbonBar.
  4. CBCGPToolbarMenuButton::DrawMenuItem correctly draws an user-defined image if its size differs from standard.
  5. Full-screen mode: fixed problem with restoring hidden control bars in case of a multi-top level frame application.
  6. The ribbon panel text color has a correct value now when CBCGPVisualManagerScenic is activated.
  7. CBCGPMaskEdit doesn't process any (except navigation) keys in read-only mode.
  8. CBCGPListBox doesn't reflect keyboard/mouse clicks if a list box has LBS_NOSEL style.
  9. CBCGPGridCtrl: fixed some problems with mouse wheel.
  10. CBCGPGridCtrl: Changed implementation of the "merged cells" feature.
  11. CBCGPGridCtrl: fixed print pagination bug, the bug appeared if a column width was larger than a print page.
  12. Fixed CBCGPEditCtrl::LoadXMLSettingsFromBuffer. "EscapeSequences" tag of XML-settings file works now. "Start" and "End" tags can contain delimiters now.

Version 12.1. Released 05/11/2010

New features:

  1. Added support for the Office 2010-style Ribbon Backstage View in the Ribbon Designer (see screenshot).
  2. The Visual Studio 2010 and Office 2010-style appearance were improved by adapting to the final product look.
  3. Grid Control changes:
    1. Added "Filter Bar" feature (see screenshot). This feature enables a "search edit box" under each grid column header. When a text is typed in an edit box, the grid data is filtered according to the entered text. Use CBCGPGridCtrl::EnableFilterBar and CBCGPGridCtrl::EnableColumnFilterEdit to enable and configure the "filter bar". You can also provide a custom filter edit control derived from the new CBCGPGridFilterEdit class. You will need to override CBCGPGridCtrl::OnFilterBarChanged method to notify the grid about entered text (or other data). Please see BCGPGridExample (new "Filter Bar" view) for more information about this feature.
    2. The following virtual methods have been added to CBCGPGridCtrl to enhance pagination support:
      1. OnMeasureListRect
      2. OnStartColumnOnNewPrintPage
      3. OnBreakColumnAcrossPrintPages.
    3. A new virtual method CanDropColumnToColumnChooser has been added to prevent hiding of the specified column by dropping it on the Column Chooser.
  4. CBCGPRibbonComboBox has an auto-complete mode now (see screenshot). The following new methods were added to CBCGPRibbonComboBox class:
    1. EnableAutoComplete: turn on/off auto-complete mode
    2. IsAutoCompleteEnabled

    By default, CBCGPRibbonFontComboBox has auto-complete mode enabled. Please take a look at BCGPMSOffice2007Demo example or RibbonGadgets sample to see this feature in action.

  5. Added support for the "search" mode to CBCGPEdit control (see screenshot). The following new methods were added to CBCGPEdit class:
    1. EnableSearchMode: turn on/off search mode
    2. IsSearchMode
    3. GetSearchPrompt

    Please take a look at BCGPControls example ("Misc. Controls" page) or SkinnedDialog sampleto see this feature in action.

  6. Added layout support to CBCGPRibbonCustomizePage: now you can add this page to resizable property sheets. Please take a look at the "Options" property sheet in BCGPMSOffice2007Demo example.


  1. Fixed problem with handling LBN_SELCHANGE message in CBCGPListBox class: ON_CONTROL_REFLECT is replaced with ON_CONTROL_REFLECT_EX.
  2. CBCGPRibbonCheckBox correctly draws tri-state check boxes now.
  3. CBCGPRibbonBar::OnChangeVisualManager fully recalculates layout of the ribbon elements. This fix was implemented to prevent incorrect element positioning in case of different element sizes in the various visual managers.
  4. CBCGPPropList doesn't "eat" UP/DOWN keys when the element drop-down list is popped-up.
  5. The ribbon mini-toolbar ("floaty") doesn't disappear now when user selects an item in the drop-down palette such as gallery or color palette.
  6. CBCGPDlgImpl::OnCtlColor ignores controls defined in m_lstNonSubclassedItems now.
  7. Added support for WM_SETFONT message in CBCGPStatic control.
  8. CBCGPStatic: fixed bug with the vertical center alignment.
  9. Fixed problem with appearance of controls in CBCGPPropertySheet (wizard mode).

Version 12.0. Released 01/20/2010

New features:

  1. CBCGPVisualManager2010 implements Microsoft Office 2010 Beta 1 color themes:

    Just activate CBCGPVisualManager2010 to use these new themes in your application: CBCGPVisualManager::SetDefaultManager (RUNTIME_CLASS (CBCGPVisualManager2010)); Please run BCGPMSOffice2007Demo, DrawCli or BCGPOrganizer to see this feature in action.

  2. Added Microsoft Office 2010-style Ribbon Backstage View (see screenshot ). The following new methods were added to CBCGPRibbonBar class:
    • SetBackstageMode: enables/disables Backstage View mode.
    • IsBackstageMode: returns TRUE if Backstage View mode is enabled.
    • AddBackstageCategory: creates Backstage View category.
    • GetBackstageCategory: returns Backstage View category.
    • IsBackstageViewActive: returns TRUE if Backstage View is currently active.

    By default, the Ribbon Application button will be displayed with the default (blue) color, but developers can customize its appearance by calling visual manager's new method 'SetMainButtonColor' (see screenshot ).

    CBCGPRibbonBar::AddBackstageCategory returns a pointer to the new class object - CBCGPRibbonBackstageViewPanel . Usually, you'll need to call the following class methods to create your backstage view:
    • AddCommand: add a single command button such as "Save", "Save As" or "Exit".
    • AddView: add a button with attached right-side form ("Print", "Recent Files" and so on). There are 2 new classes that should be used for implementing right-side views:
      • CBCGPRibbonBackstageViewItemForm: a single page dialog
      • CBCGPRibbonBackstageViewItemPropertySheet: multi-page

    Please note that our Application Wizards were updated and now, when you're creating a new, Ribbon-based application, you can choose "Backstage view" option (see screenshot ) and initial backstage view code will be automatically generated for your pleasure!.

  3. The Ribbon bar Application ("main") Button can display a text label instead of icon in the "scenic" mode (usually "File" in English language UI). The following new methods were added to the CBCGPRibbonMainButton class:
    • SetScenicText
    • GetScenicText
  4. Implemented ability to add Ribbon Galleries to the dialogs (see screenshot ). The new class CBCGPRibbonGalleryCtrl may be used for this purpose. Please take a look at BCGPMSOffice2007Demo example (Backstage view pages) to see this new control in action.
  5. Implemented Resizable Dialogs support (see screenshot1 and screenshot2):
    • Added 2 new classes:
      1. CBCGPControlsLayout: implements the base class for all layout managers.
      2. CBCGPStaticLayout: implements "static" layout management based on anchors.
    • To enable layout support, you've to call EnableLayout/GetLayout methods in the following classes:
      1. CBCGPDialog
      2. CBCGPDialogBar
      3. CBCGPropertyPage
      4. CBCGPFormView
    Please run ResizableForm new sample to see this feature in action. In addition, you can see this feature in the following examples and samples:
    1. BCGPMSOffice2007Demo: "Clipboard" Pane and Backstage view.
    2. BCGPOrganizer: resizable dialog bar.
    3. RibbonGadgets: backstage view.
    4. ToolBoxDemo: resizable form
  6. Significantly improved CBCGPVisualManagerVS2010 (see screenshot ):
    1. The color scheme is identical to Visual Studio 2010 Beta 2.
    2. Added a new Smart Docking style (BCGP_SDT_VS2010).

    You can run BCGPVisualStudioGUIDemo example to examine this look.

  7. Added content scrolling support to CBCGPDockingControlBar-derived classes (see screenshot ). By default, the scrolling is implemented in CBCGPDialogBar class only, but you can easily add this support to any CBCGPDockingControlBar-derived class (please take a look at BCGPGridExample example, COutputBar class). CBCGPDockingBarScrollButton class implements docking pane scroll button (vertical and horizontal) and its look depends on the currently activated visual manager.
  8. Calculator control has been significantly improved:
    1. All calculator buttons are drawn using built-in bitmaps and use visual manager appearance (see screenshot ).
    2. Implemented extended commands. Using a new method CBCGPCalculator::SetExtendedCommands developers can add a lot of build-in calculator commands such as idCommandAdvSin, idCommandAdvCos, idCommandAdvTan and others.
    3. CBCGPRibbonComboBox allows to display a popup calculator window. Just call CBCGPRibbonComboBox::EnableCalculator method to assign a calculator to the ribbon combobox. Override a new 'OnCalculatorUserCommand' method to implement your calculator commands.

    Please take a look at BCGPControls example and RibbonGadgets/SkinnedDialog samples to see these new features in action.

  9. The following new methods were added to CBCGPVisualManager class:
    • OnDrawDockingBarScrollButton
    • OnDrawCaptionBarCloseButton
    • GetHeaderCtrlTextColor
    • OnFillPropSheetHeaderArea
    • OnDrawDateTimeDropButton
    • GetCalculatorButtonTextColor
    • GetEditCtrlSelectionBkColor
    • GetEditCtrlSelectionTextColor
    • OnDrawDlgSizeBox
    • OnFillRibbonBackstageForm
    • OnDrawRibbonMinimizeButtonImage
    • GetRibbonMinimizeButtonImageSize
    • GetRibbonButtonsGroupHorzMargin
    • IsDrawRibbonGroupSeparator
    • OnDrawRibbonGroupSeparator
    • GetRibbonBackstageTopLineHeight
    • OnDrawRibbonBackstageTopLine
    • SetMainButtonColor
    • GetMainButtonColor
    • IsOwnerDrawDlgSeparator
    • OnDrawDlgSeparator
  10. CBCGPPropertySheet has a new mode: PropSheetLook_AeroWizard (see screenshot ). In general, this mode has been designed and implemented for Vista/Windows 7 Aero, but you can use it in any OSs/modes (see screenshot ). The glass (aero) area can be combined with a page header - we've added a new optional parameter 'bDrawHeaderOnAeroCaption' to EnablePageHeader method. Please take a look at PropSheetDemo sample to see this mode.
  11. Added support for the Internet Explorer-like new tab in CBCGPTabWnd class (see screenshot). Call EnableNewTab method to enable this feature. Please take a look BCGPIE7Demo example to see this feature in action.
  12. Grid and Report controls changes:
    • Added option to select items by clicks on grid header: New header flag BCGP_GRID_HEADER_SELECT.
    • Implemented color themes for the new visual managers such as CBCGPVisualManager2010 (Office 2010-like) and CBCGPVisualManagerVS2010 (Visual Studio 2010-like) (see screenshot).
    • Improved grid printing support. The following new classes were added:
      • CBCGPGridPage class: this class is used by the grid control to store print pages. A print page specifies which area of the grid is printed at the specified page. The grid counts in items in vertical direction. The grid counts in pixels in horizontal direction.
      • CBCGPGridPageInfo class: This class is used by the grid control to store information about the printing range and the currently printing page. It is stored in CBCGPGridCtrl::m_PrintParams::m_pageInfo member and in CPrintInfo::m_lpUserData member of the CPrintInfo object used while printing at the current print session.
    • Added an option to deselect items. To deselect an item please use SetCurSel with SM_INVERT_SEL flag. New functions were added:
      • CBCGPGridCtrl::EnableInvertSelOnCtrl
      • CBCGPGridCtrl::IsInvertSelOnCtrlEnabled
    • Changes in header click events: New BCGM_GRID_COLUMN_CLICK message. Added CBCGPGridCtrl::OnHeaderColumnRClick. Modified CBCGPGridCtrl::OnHeaderColumnClick.
    • Items align support: New CBCGPGridItem::GetAlign function. Item's alignment is specified by CBCGPGridCtrl::SetColumnAlign.
    • Grid horizontal pagination support. Added CBCGPGridPage::m_nWidth - page width, CBCGPGridPageInfo::m_nPageWidth - width of currently printed page. See CBCGPGridPage class, CBCGPGridPageInfo class.
    • Drag-and-Drop support (see new "Drag and Drop" tab in BCGPGridExample sample):
      • New message BCGM_GRID_BEGINDRAG.
      • Added methods EnableDragSelection, IsDragSelectionEnabled, EnableDragSelectionBorder, IsDragSelectionBorderEnabled, StartDragItems and HitTestSelectionBorder.
    • Extended in-place edit customization support (see new "Easy Input" tab in BCGPGridExample sample):
      • New functions OnBeginInplaceEdit, OnEndInplaceEdit, CanBeginInplaceEditOnChar, CanEndInplaceEditOnChar, OnInplaceEditKeyDown, OnInplaceEditSetSel.
      • New BCGPGRID_ITEM_INFO::dwResultCode member. See BCGPGRID_ITEM_INFO struct.
      • New method SetClearInplaceEditOnEnter. Call SetClearInplaceEditOnEnter (FALSE) to disable grid from clearing content of the item on Enter.
    • Added CBCGPGridCtrl::GoToNextItem method.
    • CBCGPGridCtrl::EnsureVisible is now virtual.
    • Added navigation by TAB (Shift+TAB) key.
    • Added "Ctrl+Z" (Undo) handler for in-place edit of the grid item.
    • Changes in CBCGPGridCtrl::SetCurSel for SM_SET_ACTIVE_ITEM style.
    • Grid item with combo-box now supports F4 to open drop-down list.
  13. Added a new parameter CBCGPMDITabParams::m_bReuseRemovedTabGroups. If this flag is TRUE MDI tab groups which were marked as removed will be used for new groups. This reduces memory consumption for applications that frequently create and remove groups.
  14. Added OpenType font support for font combo boxes.
  15. Added keyboard and MS Active Accessibility support to CBCGPTasksPane class.
  16. CBCGPEditCtrl::ExportBuffer has a new optional parameter 'BOOL bForceAnsi'. Setting it to TRUE forces exporting editor's text in ANSI format.
  17. CBCGPRibbonStatusBarPane constructor and SetAnimationList method have a new optional parameter 'BOOL bDontScaleInHighDPIMode'. Set it to TRUE if you don't need to scale pane image in the High DPI mode.
  18. When user clicks on the glass area of CBCGPExplorerToolBar window, the application window is moved now.
  19. Added CBCGPCalendarBar::GetState method - returns the calendar style flags specified in SetState method.
  20. CBCGPRibbonEdit displays a drop-down window upon pressing F4 key.
  21. Added CBCGPShellManager::IsControlPanel method.
  22. Added new font 'fontCaption' to BCGPGLOBAL_DATA. This font will be useful for displaying caption texts.
  23. CBCGPStatic has a new member: m_clrText. You can set this member to colorize text labels (see SkinnedDialog sample).
  24. New method CBCGPDockManager::ShowFloatingBars shows/hides floating panes.
  25. CBCGPListBox control can work with left-side icons and item group headers now. The following new methods were added:
    • SetImageList: set items image list
    • SetItemImage: associate item with a specific icon
    • AddCaption: add a group caption
  26. Changes in examples and samples:
    • BCGPControls: "Calculator" page demonstrates new calculator features
    • BCGPGridExample: added new visual managers and new 2 tabs: "Drag and Drop" and "Easy Input"
    • BCGPIE7Demo: the tab control was fully redesigned and derived from the library MDI Tab control.
    • BCGPMSOffice2007Demo: added MS Office 2010 Backstage view. "Clipboard" pane demonstrates a new layout manager.
    • BCGPVisualStudioGUIDemo: Start Page view can be converted to docking control bar.
    • DrawCli: added MS Office 2010 Backstage view and new visual managers.
    • PropSheetDemo: added Aero Wizard demonstration.
    • ResizableForm: new sample, demonstrates how to use a new layout manager along with dialogs, dialog bars, property sheets and form views.
    • RibbonGadgets: added MS Office 2010 Backstage view and edit boxes with calculator.
    • SkinnedDialog: added edit box with calculator and text labels with a custom colors.
  27. Changes in the Ribbon Designer:
    • Added "Calculator" element.
    • Support for three new styles introduced in Microsoft Office 2010 (blue, silver, black)
    • Ribbon elements can be edited by double click.
    • Image lists can be loaded from files.
    • Implemented icon editing for Palette (Gallery) Buttons.


  1. FireChangingActiveTab is called from CBCGPOutlookWnd::SetActiveTab now.
  2. Fixed resource leak in CBCGPUserTool::DrawToolIcon
  3. Fixed problem with a slider's thumb location in CBCGPRibbonSlider::SetThumbRect in the High DPI mode.
  4. Improved appearance of the calendar drop-down button in CBCGPDateTimeCtrl.
  5. Fixed problem with setting editbox auto-complete mode in Windows 9x/NT4
  6. CBCGP***FrameWnd::WinHelp dwData parameter has DWORD_PTR type now. This fixes 64-bit compatibility issue with this virtual method.
  7. Fixed memory leak in CBCGPPngImage::LoadFromBuffer (VS.NET 2003 or higher, BCGP_EXCLUDE_GDI_PLUS is defined).
  8. CBCGPGroup is properly handles WM_SETTEXT message now.
  9. CBCGPCalendar always closes dropped-down month picker when the calendar is being destroyed.
  10. CBCGPRibbonEdit::OnDraw correctly draws edit box label in case of center/right-side control alignment.
  11. Fixed appearance of CBCGPExCheckList items in the high DPI mode (under VC++ 6.0).
  12. Fixed problem with displaying disabled check boxes (CBCGPButton class) when some visual managers are activated.
  13. Fixed problem with CBCGPHeaderCtrl items text color when some visual managers are activated.
  14. Fixed problem with vertical scrolling of elements in CBCGPRibbonPanel::OnKey.
  15. CBCGPEdit correctly draws a browse button image and text when control is located on the glass (aero) area.
  16. CBCGPEdit uses visual manager color them when control has ES_READONLY style.
  17. CBCGPStatic doesn't perform the custom drawing if it has a style like icon, rectangle or frame.
  18. CBCGPPropertySheet: fixed some problems with repositioning and redrawing navigation buttons.
  19. Fixed some visual problems in owner-draw frame/dialog captions.
  20. Ribbon Main Button scenic icon is correctly painted in high DPI mode now.
  21. Fixed problem with text alignment in grid columns. CBCGPGridCtrl::SetColumnAlign is working properly now.
  22. Fixed bug with using different horizontal color and vertical color for the grid lines. The m_clrVertLine setting did not work when m_bGridItemBorders flag was switched on.
  23. Fixed problem with clicking on CBCGPGridURLItem in read-write mode.
  24. Fixed a bug with automatic sizing of grid columns. The bug appeared when auto-sizing was enabled with EnableColumnAutoSize(TRUE).
  25. Fixed bug with "Ctrl+A" for in-place editing of grid items. "Ctrl+A" selects all text inside in-place editor during in-place editing, instead of the entire grid as before.
  26. Fixed memory leak in CBCGPGridCtrl::CopyHtmlToClipboardInternal.
  27. Ribbon Designer supports Visual Studio 2008 and Visual Studio 2010 Beta 2 projects.

Version 11.0. Released 08/06/2009

New features:

  1. We're proud to announce a new Visual Manager - CBCGPVisualManager2010 , which implements the new Microsoft Office 2010 TP white theme (see screenshot)! The main benefits of this theme are:
    • Ribbon "Aero" tabs
    • Ribbon "Minimize" button
    • Flat panels and groups
    • Colorized application ("main") button

    To use this new theme in your application just activate CBCGPVisualManager2010: CBCGPVisualManager::SetDefaultManager (RUNTIME_CLASS (CBCGPVisualManager2010)); Please run BCGPMSOffice2007Demo or BCGPOrganizer to see this feature in action.

  2. Added a new class CBCGPVisualManagerVS2010, which implements Microsoft Visual Studio 2010 Beta 1 look (see screenshot). You can run BCGPVisualStudioGUIDemo example to examine this new fresh look!
  3. Added Windows 7 Taskbar Interaction for MDI applications (see screenshot1 and screenshot2):
    • CBCGPWorkspace has the following new methods:
      1. EnableTaskBarInteraction
      2. IsTaskBarInteractionEnabled
    • CBCGPMDIFrameWnd has the following new methods:
      1. RegisterAllMDIChildrenWithTaskbar
      2. GetRegisteredWithTaskBarMDIChildCount
    • CBCGPMDIChildWnd has the following new methods:
      1. RegisterTaskbarTab
      2. IsRegisteredWithTaskbarTabs
      3. UnregisterTaskbarTab

    Please run BCGPVisualStudioGUIDemo or DrawCli examples to see this feature in action.

  4. Significantly improved Windows 7-style Ribbon presentation (see screenshot). Please activate CBCGPVisualManagerScenic and see that the Ribbon bar is fully-identical to the native Windows 7 Ribbon!
  5. Added ability to search the Ribbon commands "on the fly" (see screenshot)! You can easily add the command search to the Ribbon Main panel and user can find and invoke the required command in seconds, without looking through all ribbon tabs. CBCGPRibbonMainPanel has a new method EnableCommandSearch. In addition, a developer can use the search box separately: CBCGPRibbonEdit has new methods - EnableSearchMode, IsSearchMode and GetSearchPrompt.
  6. Added Vista-style Breadcrumb control (see screenshot). Please take a look at BCGPControls ("Shell Controls" page) and BCGPMediaPlayer examples to see this control in action and learn how to add it to your application. New classes CBCGPBreadcrumb and CBCGPShellBreadcrumb implement this control. The following new methods have been added to CBCGPVisualManager class:
    1. BreadcrumbFillBackground
    2. BreadcrumbDrawItemBackground
    3. BreadcrumbDrawItem
    4. BreadcrumbDrawArrowBackground
    5. BreadcrumbDrawArrow
    6. BreadcrumbDrawLeftArrowBackground
    7. BreadcrumbDrawLeftArrow
  7. Improvements in Ribbon Designer:
    1. Ability to add elements from Toolbox by double click.
    2. The following elements were added to Toolbox:
      • Context
      • Search edit control
      • Search combo box control
    3. Added Windows 7 and Office 2010 application looks.
    4. Added ability to preview the generated XML file.
    5. Implemented Cut, Copy, Paste and Drag & Drop operations for the Context Categories.
    6. Added ability to load, save, and edit Search Box for Main Category.
    7. Added ability to load, save, and edit strings for edit boxes.
    8. Added ability to load and save icons and groups for Palettes (Galleries).
    9. Added ability to load, save, and edit Automatic & Other buttons for Color buttons.
    10. Implemented loading of project files created by Visual Studio 2010 Beta 1.
  8. Added hyperlinks and custom background/text colors to CBCGPCaptionBar (see screenshot).
  9. Added Office 2010-style Ribbon minimize button (see screenshot). CBCGPRibbonBar has 2 new methods: EnableMinimizeButton and HasMinimizeButton.
  10. Method CBCGPToolBar::RebuildAccelerationKeys is virtual now.
  11. Added CBCGPBaseRibbonElement::GetElementsByName method: this method returns a list of ribbon elements that match the given name.
  12. globalData.m_nShellAutohideBars has been replaced with the access method globalData.GetShellAutohideBars().
  13. Although the Carbon theme was designed for toolbar/menu-based application, we decided to improve the Ribbon presentation in CBCGPVisualManagerCarbon theme too.
  14. CBCGPRibbonComboBox class has a new method InsertItem.
  15. Middle mouse button click on MDI Tab closes the corresponding MDI child window now (like in VS 2005/2008).


  1. Added horizontal scrolling to the command list box in CBCGPKeyboardPage.
  2. Fixed some drawing problems in CBCGPButton: when check box has BS_TOP or BS_BOTTOM style, the text is correctly positioned now.
  3. CBCGPReBar passes MS Active Accessibility events to the child panes now.
  4. When CBCGPMessageBox is being loaded, the standard Windows message beep is appear (this behavior is similar to the standard message box)
  5. Fixed problem with a keyboard navigation when CBCGPRibbonSlider is a vertically-oriented (in the previous versions, UP/DOWN keys moved slider in the opposite direction).
  6. Resolved resource leak in CBCGPOutlookBarPane::AddButton. In the previous versions, the resource wasn't freed properly in case of 32 bit icons.
  7. Fixed problem with scrolling CBCGPCalendar and CBCGPDateTimeCtrl dates outside the allowed year range (between 100 and 9999).
  8. Fixes in Ribbon Designer:
    1. Loading projects for Visual Studio 2008 (path to resource files couldn't be found).
    2. Incorrect message about missing MainFrm.cpp during project loading.
    3. Wrong icon for Spin Edit in Elements tree.

Version 10.3. Released 02/17/2009

New features:

  1. The library is fully tested on Windows 7 Beta.
  2. The product is fully High DPI-compatible now! You can run your application in High DPI modes without any visual artifacts - just call globalData.SetDPIAware() in your application's InitInstance! All toolbar/menu/ribbon images will be scaled automatically using a smooth resizing algorithm. If your predefined images are already scaled according to the current DPI mode, just set CBCGPToolBar::m_bDontScaleImages to FALSE prior to toolbars loading. In case of the "locked" (non-customizable) toolbars, call SetLockedSizes with bDontScale = TRUE (bDontScale is a new optional parameter).
  3. Added a new visual manager 'CBCGPVisualManagerScenic" that Implements Windows 7-like ("Scenic") Ribbon bar (see screenshot). Please run BCGPMSOffice2007Demo example and choose "Windows 7-like" style to see this feature in action!
  4. Added support for Visual Studio 2008-style semi-transparent docking markers (see screenshot). By default, this look is automatically enabled in VS 2008 and Office 2007 visual managers (see BCGPVisualStudioGUIDemo example), but you can set it in any visual managers by passing a new parameter to CBCGPDockManager::SetDockMode (BCGP_DOCK_TYPE dockMode, BCGP_SMARTDOCK_THEME theme = BCGP_SDT_DEFAULT). If you need to setup a default marker theme in your visual manager, override virtual BCGP_SMARTDOCK_THEME GetSmartDockingTheme () virtual method. Please note that this new look is available under the Windows Vista or higher only.
  5. All menu/toolbar text items will be displayed without underscores until Alt key is pressed.
  6. Added new method BOOL CBCGPToolBarImages::SmoothResize (double dblImageScale). This method resizes image using bicubic interpolation.
  7. CBCGPRibbonCategory::AddPanel has a new optional parameter 'nInsertAt = -1'. This allows to insert a new ribbon panel at specific location.
  8. CBCGPProgressDlg::StepIt has a new, optional parameter 'bWaitForMessages'. Set this parameter to FALSE in order to prevent unnecessary message waiting.
  9. Toolbar's "non-permitted" commands (defined by calling CBCGPToolBar::SetNonPermittedCommands) are not displayed on the Ribbon bar now.
  10. Added a new virtual method: CBCGPEdit::OnIllegalFileName. This method is called when user has typed an illegal file name and tries to show the file dialog. Override this method if you wish to add a special error handling such as displaying an error message.
  11. Skinned dialogs enhancements and improvements:
    1. Improved appearance of disabled CBCGPStatic control.
    2. Multi-line text is vertically centered now in CBCGPButton control.
    3. Radio button is correctly painted now when BS_AUTO3STATE is not defined.
    4. CBCGPComboBox doesn't "eat" CBN_CLOSEUP and CBN_DROPDOWN notifications: ON_CONTROL_REFLECT_EX is used instead of ON_CONTROL_REFLECT now.
    5. Added support for drawing CBCGPComboBox control with CBS_SIMPLE style.
    6. CBCGPPropertySheet adjusts correctly the window size when the property sheet header is enabled.
    7. Added support for PSM_SETWIZBUTTONS and PSM_SETFINISHTEXT messages in CBCGPPropertySheet
    8. The method 'EnableVisualManagerStyle' (in CBCGPFormView, CBCGPDialog, CBCGPDialogBar and CBCGPPropertyPage classes) has a new optional parameter: plstNonSubclassedItems - the list of IDs that shouldn't be automatically subclassed.
    9. DS_CONTEXTHELP style is not used now in CBCGPropertySheet window.
    10. The check box height is calculated correctly now when CBCGPButton is created in High DPI mode.
  12. Grid control enhancements:
    1. CBCGPGridItem has a new virtual method: NewInPlaceEdit. Override this method if you need to create your own in-place edit control.
    2. Added new protected function OnGetColumnAutoSize. It allows to customize the column auto-size feature in the CBCGPGridCtrl-derived class.
  13. Editor enhancements:
    1. Added new function GetCurLine (CString& strLine).
    2. Added new member m_bEnableCurrentLineCopy. Setting this flag to TRUE allows to copy the current line to the clipboard if there is no selection. It works similar to m_bEnableWholeTextCopy.
  14. Gantt chart enhancements:
    1. CBCGPGanttView: new virtual methods 'OnCreateChart' and 'OnCreateGrid' have been added. Override these methods if you wish to create your own Gantt view panes.
    2. Added new registered messages:
      1. BCGM_GANTT_CONTROL_CREATE_CHART: allows using custom chart control. Sent when the Gantt control creates a chart.
      2. BCGM_GANTT_CONTROL_CREATE_GRID: allows using custom grid control. Sent when the Gantt control creates a grid.
    3. New virtual method CBCGPGanttChart::QueryRenderer allows to override the Gantt rendering.
  15. Ribbon Designer enhancements, changes and fixes:
    1. It's possible to add context categories from Toolbox.
    2. You can add categories from a dialog.
    3. Categories can be added to the existing context categories. In the previous version this action caused the "Context already exists" error.
    4. Editing of FontComboBox is done without rebuilding of fonts, which improved performance during loading and editing.
    5. If you're editing ComboBox strings using Property Grid, you need to type "\;" in order to add symbol ";" to a string. You can still type ";" when editing strings in the dialog.
    6. Ribbon Bar is redrawn correctly when its width exceeds the width of screen.
  16. Updated French translation.


  1. CBCGPFontProp::OnClickButton doesn't change LOGFONT and color members if the "Cancel" button was clicked.
  2. Fixed problems with drawing multi-line text labels in CBCGPTasksPane.
  3. Fixed problem with appearance of Ribbon Tooltips when the Ribbon Bar is located near the bottom of screen.
  4. Double-click on CBCGPTabWnd's "Close" button doesn't close 3 MDI child windows at once now.
  5. Tab text label is not cut-off now in VS2005 style.
  6. The content of ribbon mini-toolbar ("floaty") elements is synchronized correctly now with all other ribbon elements.
  7. The ribbon mini-toolbar ("floaty") is not closed now after user has clicked on a drop-down item such as color or font name.
  8. The tooltip is not displayed now on the toolbar combobox if toolbar::ShowTooltips property is FALSE
  9. Dialog bars are created from dialog templates with correct size.
  10. Fixed a problem with docking bars converted to tabbed documents. Now you can convert such bars back to dockable even if tabbed interface is turned off - right click on caption of MDI child displays appropriate context menu.
  11. Added a sanity check that only visible MDI children can appear on tabs.
  12. Fixed problem with a minimal tracking size in the Ribbon-based application: when Vista Aero is off or application is executed under the previous OSs such as Windows XP or Windows 2000.
  13. CBCGPRibbonPanel::RemoveAll sets m_pHighlighted to NULL and m_pHighlighted doesn't point to deleted ribbon element.
  14. The ribbon layout is calculated correctly now when empty panels or panels with empty namesare added.
  15. Ribbon QAT doesn't show separators located near hidden QAT items now.
  16. CBCGPEditCtrl: fixed bug with tabs and cursor moving (see forum bug report ).
  17. Fixed bug in editor outlining. The bug happened after positioning the cursor right before the collapsed block and pressing "Enter".
  18. Grid control: fixed minor issue with vertical scrollbar. Now it does not overlay last pixels.
  19. Grid control: fixed selection with CTRL. Now the grid does not select same items twice with CTRL pressed.
  20. Fixed bug in CBCGPAppBarWnd. The side bar occasionally did not work properly in auto-hide mode in Windows XP.
  21. Double click on interior of a floating toolbar docks it at the recent docked position. Before it was required to double click caption of floating toolbar.
  22. CBCGPRibbonMainButton::SetImage correctly processes < 32 bpp images now.
  23. CBCGPWinXPVisualManager doesn't draw an unnecessary gutter on CBCGPColorBar now.
  24. Fixed bug with positioning of drop-down button in CBCGPDateTimeCtrl.
  25. The MDI child window captions are repainted correctly now when Office 2007 theme is activated.
  26. CBCGPFrameWnd::AdjustClientArea/CBCGPMDIChildWnd::AdjustClientArea doesn't set WS_CLIPCHILDREN style for CFormView views. This fix resolves some form controls (such as groups) painting problems.
  27. Fixed bug with a context menu customization: immediate click on the "Close" button of the customization dialog saves changes in the last edited menu item.

Version 10.21. Released 10/03/2008

New features:

  1. Added ability to export a Ribbon bar to the Ribbon designer (XML) format. Just call a new static method CBCGPRibbonBar::SaveRibbon after Ribbon initialization and now you can load and edit your Ribbon in the visual designer.
  2. Added read-only mode to CBCGPGanttControl: use a new method SetReadOnly to enable/disable this mode and IsReadOnly to whether a Gantt control is in read-only mode.
  3. Class "CBCGPRibbonRecentFilesList" is exportable now.


  1. Improved appearance of disabled items in Carbon visual manager.
  2. Fixed parameters order in the BCGPMessageBox global method.
  3. The message box "Close" caption button is disabled now when the message box doesn't display a "Cancel" button.
  4. Carbon visual manager: fixed bug with displaying highlighted/pressed buttons on toolbars and dialogs.
  5. Removed an unnecessary assertion in CBCGPDrawManager::FillGradient2.
  6. Fixed bug with displaying menu shadows under Windows 95/98/ME.

Version 10.2. Released 09/24/2008

New features:

  1. Added a new visual manager 'CBCGPVisualManagerCarbon' (see screenshot ). All basic GUI elements such as menus, toolbars and docking panes are drawn with a dark "carbon-style" theme, so the user can concentrate his look on the application view. Please take a look at BCGPSkins, BCGPGridExample or SkinnedDialog examples/sample to see how this new visual manager looks.
  2. A new class 'CBCGPMessageBox' has been added. This class enhances the standard Windows Message Box component (see screenshot). The following features are provided out of the box:
    • Office 2003/2007 look
    • Custom look
    • Custom icons and buttons
    • Check box control
    • Left and right text alignment

    Please take a look at the new MessageBoxDemo sample to see this class in action.

  3. The Ribbon Designer supports Context Categories (tabs).
  4. Implemented a lot of improvements and fixes in the Grid control:
    • Added Left Header (see screenshot ). You can use this column to display either currently selected row or row numbers. Please call a new method 'EnableRowHeader' to enable/disable this column and 'EnableLineNumbers' to show/hide the row numbers.
    • Copy to HTML support (see screenshot ). The grid control allows to export selection or the whole content to the clipboard in "HTML Format". Please see BCGPGridExample sample. New CBCGPGridCtrl::Copy function has been added.
    • CBCGPGridCtrl::SetCurSel method is virtual now.
    • Added functions to work with selection: SelectRow, SelectAll, IsAllSelected, GetSelectionCount.
    • Added CBCGPGridCtrl::InsertRowBefore.
    • Added CBCGPGridCtrl::OnGetColumnMinWidth to specify the minimal width of the column
  5. CBCGPBaseTabWnd has a new virtual method 'OnClickCloseButton'. Override this method to implement a custom action when the tab close button is clicked.
  6. CBCGPRibbonQATDefaultState has a new method 'AddSeparator'. This method allows to add separators to the initial ribbon QAT state.
  7. CBCGPFontComboBox is derived now from CBCGPComboBox. This allows to apply a currently selected skin to this control.
  8. CBCGPDialog::SetBackgroundImage supports PNG images now.
  9. CBCGPPropertySheet has a new mode now: PropSheetLook_Wizard (see screenshot ).
  10. CBCGPPropertySheet tree mode has a new look (see screenshot ): the left-side tree control displays lines, and tree nodes are not "auto-collapsed" now. If you wish to keep the former look, please set the static variable CBCGPPropertySheet::m_bUseOldLookInTreeMode to TRUE. PropSheetDemo sample illustrates both new and old tree modes.
  11. Added support for Help ("?") caption button in the skinned dialogs and property sheets.


  1. Fixed a lot of bugs in the skinned controls and dialogs:
    1. CBCGPStatic redraws itself when control is being enabled/disabled
    2. CBCGPGroup handles WM_UPDATEUISTATE message. This fixes some redrawing bugs.
    3. CBCGPButton: fixed some drawing bugs in check box and radio button modes.
    4. CBCGPDialog and CBCGPPropertySheet handle WM_SETTEXT message and redraws the dialog caption now.
    5. CBCGPPropertySheet adjusts the property sheet buttons when "Apply" button is clicked.
    6. CBCGPEdit::OnNcPaint draws the control border only if control has 'WS_BORDER' style.
    7. The skinned caption height is calculated correctly now in CBCGPDialog and CBCGPPropertySheet. If the window has 'WS_EX_TOOLWINDOW' style, the caption height is calculated properly now.
  2. CBCGPPropList::AdjustLayout: fixed bug with repositioning of in-place edit control.
  3. A disabled ribbon's gallery element can be added to QAT now.
  4. Tooltip position for CBCGPGridColorItem is calculated properly now.
  5. Fixed bug with tabs and indenting in the editor, fix in CBCGPEditCtrl::InsertTab.
  6. Mouse double click to select one word in the editor works properly now.

Version 10.1. Released 07/16/2008

New features:

  1. The first version of the long-awaited Ribbon Designer is available (see screenshot)! This designer dramatically simplifies the ribbon creation process and allows to create the "state of the art" products in few minutes! You don't need to write hundreds of lines anymore: the Ribbon programming has never been so easy and efficient - just run the Ribbon Designer and enjoy using it. The changes in the Ribbon API are minimal:
    • CBCGPRibbonBar::LoadFromXML: loads the ribbon content from an XML resource created by Designer
    • CBCGPRibbonBar::LoadFromBuffer: loads the ribbon content from memory buffer

    Please read the following new article to learn how to use Ribbon Designer. You can load the new RibbonDesignerDemo sample to see how to create a basic MS Office 2007-style application in few lines of code. Please send us your comments, wishes and suggestions regarding the new Ribbon Designer - your feedback will be highly appreciated!

  2. A new class 'CBCGPRibbonDialogBar' has been added. This class implements a "Ribbon-style" vertically-oriented docking pane that contains a lot of ribbon panels (see screenshot). Please take a look at the new RibbonDialogBar sample to see this component in action.
  3. BCGCBProIntegrate and BCGCBProBuildWizard utilities were replaced with the new tool BCGCBProIntegrationWizard (see screenshot).
  4. Implemented a lot of improvements and fixes in skinned dialogs and controls:
    • BCGPGLOBAL_DATA has a new static member 'm_bUseVisualManagerInBuiltInDialogs'. Set this member to TRUE if you wish to draw built-in dialogs using the Visual Manager (see screenshot).
    • CBCGPPropertySheet::EnableVisualManagerStyle and CBCGPDialog::EnableVisualManagerStyle have a new, optional parameter 'bNCArea'. Pass 'TRUE' if you wish to display your dialog or property sheet with skinned borders and caption (see screenshot).
    • CBCGPButton supports 3-state check boxes now.
    • CBCGPButton allows to subclass multi-line and right/center aligned check boxes and radio buttons.

    Please take a look at SkinnedDialog and PropSheetDemo samples to see these features in action.

  5. CBCGPGridCtrl: added "frozen" columns support. The following new methods have been added to the grid control:
    • FreezeColumns: This function enables the "frozen column" feature, which allows to keep columns visible while the rest of columns are scrolled horizontally.
    • UnfreezeColumns: disables the "frozen columns" feature.

    Please take a look at BCGPGridExample application to see this feature in action.

  6. CBCGPPropList: added support for "commands" (see screenshot). The following new methods have been added to the property list:
    • BCGM_PROPERTY_COMMAND_CLICKED: new notification; sent to the Property List owner when a command is clicked.
    • SetCommands: set the list of available commands
    • ClearCommands: clear the commands
    • HasCommands: returns TRUE if commands are available; otherwise FALSE
    • SetCommandTextColor: set command foreground color
    • GetCommandTextColor: returns command foreground color

    Please take a look at BCGPControls and BCGPVisualStudioGUIDemo examples to see this feature in action.

  7. CBCGPCaptionButton has a new virtual method 'GetCustomToolTip'. Override this method to implement your custom caption button tooltips (see new CaptionButtons sample - screenshot).
  8. CBCGPMiniFrameWnd::BringAllMiniFramesToWorkArea - Detects all floating mini frame windows outside of the work area and brings them back to the work area.
  9. Because of some problems in compilation with /CLR option, CBCGPBaseRibbonElement::DrawText was renamed to CBCGPBaseRibbonElement::DoDrawText.
  10. A new method CBCGPTabWnd::SetButtonsVisible allows to hide the tab control scroll/menu buttons
  11. CBCGPRibbonFloaty has a new property: SetOneRow/IsOneRow. This property is useful for tiny mini-toolbars where item wrapping is not required and a toolbar should take one row only.
  12. Added complete German translation (thanks to Ingo Asch).


  1. Significantly improved performance of font combo box loading.
  2. Resolved compilation problems if BCGP_EXCLUDE_GRID_CTRL or BCGP_EXCLUDE_RIBBON macros are defined by a developer.
  3. Fixed bug in AppWizard-generated code: the ribbon bar correctly appears in SDI applications when they run for the first time.
  4. The Ribbon QAT placed on bottom doesn't overlap the frame's right edge now when the QAT displays a lot of items.
  5. CBCGPRibbonColorButton doesn't send WM_COMMAND from color buttons twice.
  6. Added flag 'DT_NOPREFIX' inside CBCGPInplaceToolTipCtrl::OnPaint.
  7. Removed ability to add the main (application) button to QAT using the Ribbon customization dialog.
  8. Resolved problem with maximizing/restoring the application frame in multi-monitor environment: in the previous version the frame wasn't properly restored on the secondary monitor.
  9. The frame border size is calculated correctly now when the frame doesn't have the WS_THICKFRAME style.
  10. Fixed some bugs in CBCGPTagManager when the manager is used in UNICODE.
  11. CBCGPEdit doesn't "eat" EN_CHANGE notification.
  12. The dialog group box is painted correctly now when the group caption is empty.
  13. Fixed some bugs with drawing of long captions along with Ribbon context tabs.
  14. The item "Add to QAT" doesn't appear on the Ribbon context menu if QAT has never been initialized.
  15. "Exit" button, when it's placed on the Ribbon QAT and invoked using key tips doesn't cause application crash.
  16. Fixed some visual bugs with drawing connectors in Gantt control.
  17. Improved performance of the Gantt storage: a developer can load a large amount of items.
  18. CBCGPGridCtrl: fixed bug with assertion failed in debug when only one column is visible.
  19. CBCGPEditCtrl: Fixed bug in GetLine: the previous version truncated the last character in line.
  20. Some AfxMessageBox methods called from toolbar customization dialogs have been replaced with MessageBox calls. This resolves some problems with enabling floating mini-frames inside AfxMessageBox.

Version 10.0. Released 05/05/2008

New features:

  1. The following methods and enumerated value names have been renamed for compatibility with Visual Studio 2008 Feature Pack:
    Old name New name
    CMenuImages CBCGPMenuImages
    GetCmdMgr BCGPGetCmdMgr
    IsStandardCommand IsBCGPStandardCommand
    BCGP_CS_STATUS Added BCGP_ prefix to all values
    BCGP_DOCK_METHOD Added BCGP_ prefix to all values
    BCGP_DOCK_TYPES Added BCGP_ prefix to all values
  2. The first version of the long awaited Gantt Control has been included (see screenshot ). Please take a look at the BCGPGanttDemo and BCGPOrginizer examples to see this control in action. The highlighted features are:
    1. MFC Document/View integration - the CBCGPGanttView class is provided out of the box
    2. Unlimited time bar
    3. Fully-customizable appearance
    4. Different types of task objects such as regular tasks, milestones and so on
    5. Build-in resource grid
    6. Task connectors
    7. Zoom in/Zoom out
    8. Collapsible groups (projects)
    9. Print and Print Preview
    10. Drag and drop + item resizing support
  3. Ribbon additions:
    1. Added full keyboard navigation support.
    2. Ribbon elements (see screnshot ):
      • Added new class - CBCGPRibbonRadioButton
      • CBCGPRibbonSlider can be displayed with the various TBS_*** styles: the new optional parameter 'dwStyle' has been added to the constructor.
    3. Added new notification message: BCGM_ON_BEFORE_SHOW_PALETTE_CONTEXTMENU. By handling this message a developer can customize the gallery context menu (see screenshot ).
    4. CBCGPRibbonCustomizePageand CBCGPRibbonCustomize classes have the new method EnableKeyboradCustomization (TRUE | FALSE). Call this method if you wish to disable the keyboard customization.
    5. Improved behavior of the context menu displayed along with the Ribbon mini-toolbar.
    6. Improved performance of CBCGPRibbonKeyTip window.
  4. Planner additions:
    1. Multi-resource support (see screenshot ):
      1. CBCGPAppointment - SetResourceID/GetResourceID
      2. Added new class CBCGPPlannerViewMulti
      3. Added new class CBCGPAppointmentMultiStorage
      4. Added notification BCGP_PLANNER_RESOURCEID_CHANGED
      6. Added new method CBCGPPlannerManagerCtrl::IsMultiResourceStorage
      7. Added a new property CBCGPPlannerManagerCtrl::AddResourceRTC
      8. Added a new method CBCGPPlannerManagerCtrl::AddResource
      9. Added a new method CBCGPPlannerManagerCtrl::RemoveResource
      10. Added a new method CBCGPPlannerManagerCtrl::GetResourceInfo
      11. Added a new method CBCGPPlannerManagerCtrl::GetCurrentResourceID
      12. Added a new method CBCGPPlannerManagerCtrl::SetCurrentResourceID
      13. Added a new method CBCGPPlannerManagerCtrl::SetUseMultiResourceDefault
    2. CBCGPPlannerViewWeek::GetCaptionFormatStrings modified to support MS Office 2007-style captions (see BCGP_PLANNER_DRAW_VIEW_CAPTION_DAY_COMPACT)
    3. Added new notifications:
    4. Added the following drawing flags:
      • BCGP_PLANNER_DRAW_VIEW_WEEK_BAR - draw week bar on the monthly view
      • BCGP_PLANNER_DRAW_VIEW_CAPTION_DAY_BOLD - draw captions using bold font
      • BCGP_PLANNER_DRAW_VIEW_CAPTION_DAY_COMPACT - MS Office 2007-style date format for all views
  5. Grid and Report additions:
    1. Built-in Filter Support (see screenshot ). You can add a callback function and implement any custom filter. Please see the BCGPGridExample and switch to Filter tab. The following new functions have been added:
      • CBCGPGridCtrl::EnableFilter
      • CBCGPGridCtrl::GetFilterCallbackFunct
      • CBCGPGridCtrl::IsFilterEnabled
    2. The grid header implements the new feature to enable buttons. The control displays caption buttons optionally. The following new functions have been added to support header buttons:
      • CBCGPGridCtrl::SetHeaderBtnImageList
      • CBCGPGridCtrl::GetHeaderBtnImageList
      • CBCGPGridColumnsInfo::SetHighlightColumn
      • CBCGPGridColumnsInfo::GetHighlightColumn
      • CBCGPGridColumnsInfo::SetHighlightColumnBtn
      • CBCGPGridColumnsInfo::GetHighlightColumnBtn
    3. The CBCGPGridCtrl class has the new constructor with parameter nMemBlockSize. This improves performance of adding new rows in CBCGPGridCtrl by increasing the block size of its list-containers. The new field int CBCGPGridCtrl::m_nRowsBlockSize and the new function CBCGPGridCtrl::GetRowBlockSize have been added.
    4. Implemented the "Preview mode" feature for the report control (see screenshot ). Please see BCGPGridExample and ReportDemo samples. The new functions and fields to customize preview pane:
      • CBCGPGidCtrl::SetPreviewTextColor
      • CBCGPGidCtrl::GetPreviewTextColor
      • CBCGPGidCtrl::AllowRowExtraHeight
      • CBCGPGidCtrl::IsRowExtraHeightAllowed
      • CBCGPGridColumnsInfo::IsTextColumn
      • CBCGPGridColumnsInfo::SetTextColumn
      • CBCGPGridCtrl::IsTextColumn
      • CBCGPGridCtrl::SetTextColumn
      • CBCGPGridColumnsInfo::GetLeftTextOffset
      • CBCGPGridCtrl::IsPreviewRowEnabled
      • CBCGPGridCtrl::OnGetPreviewRowMargins
      • CBCGPGridColumnsItem::m_bText.
    5. Added tooltips for groups. Override CBCGPGridRow::GetNameTooltip to customize tooltips behavior. New virtual functions: CBCGPGridRow::GetName, CBCGPGridRow::GetNameTooltipRect.
      • BOOL CBCGPGridItem::IsMultiline
      • BOOL CBCGPGridItem::IsWordWrap
    7. Added support for customizing borders of the grid item:
      • CBCGPGridItem::OnDrawBorders
      • CBCGPGridItem::OnGetBorders
      • CBCGPGridItem::OnGetBorders
      • Added BOOL CBCGPGridItem::m_bGridItemBorders flag. Set it to TRUE to enable borders.
    8. Added the new "merged cells" feature (see screenshot ). The CBCGPGridItem class has the following new functions: Merge, GetMergedCells, GetMergedRect, GetMergedRange, GetMergedMainItem, The CBCGPGridCtrl class has the following new functions: MergeSelection, UnMergeSelection, MergeRange, UnMergeRange, OnMergeCellsChanging, OnMergeCellsChanged. Added new class CBCGPGridMergedCell.
    9. The CBCGPGridColumnsInfo::GetGroupingColumnOrderArray and CBCGPGridColumnsInfo::GetColumnOrderArrayfunctions have been changed. Now they return the count of values actually written into the array.
    10. Improved Grid printing. Now the grid divides content to several pages from left to right. New member int CBCGPGridPage::m_nHorzOffset was added. Use the new function to customize print pagination: OnAddGridPageRowForPrint
    11. The new access function BOOL CBCGPGridCtrl::IsMarkSortedColumn has been added.
    12. Added support to show and hide scrollbars:
      • CBCGPGridCtrl::ShowVertScrollBar
      • CBCGPGridCtrl::ShowHorzScrollBar
    13. New function CBCGPGridCtrl::SelectColumn selects a row in the Grid.
    14. Added the following handlers in the CBCGPGridCtrl class:
      • OnResizeColumns
      • OnUpdateVScrollPos
      • OnMouseLeave
    15. CBCGPVisualManager has a new virtual method: OnSetGridColorTheme. This method allows to draw the grid using "native" visual manager color theme (see screenshot)
  6. The MS Active Accessibility support is fully revised:
    1. BCGPOleAcc.dll does not longer exist - all MSAA features are implemented inside the library now.
    2. The most of the library classes are derived now from the new class - CBCGPWnd.
    3. Added the new data structure - CBCGPAccessibilityData (see BCGPAccesibility.h file)
    4. The MSAA support is implemented in the following new virtual methods now:
      1. CBCGPWnd::OnSetAccData
      2. CBCGPWnd::IsAccessibilityCompatible
      3. CBCGPBaseRibbonElement::SetACCData
      4. CBCGPToolbarButton::SetACCData
  7. Added Skinned Dialogs and Forms support:
    1. The new EnableVisualManagerStyle method has been added to CBCGPDialog (see screenshot ), CBCGPDialogBar (see screenshot ), CBCGPPropertySheet and CBCGPPropertyPage classes (see screenshot ).
    2. Added a new class CBCGPFormView (see screenshot ).
    3. The following existing classes have support for themes and Vista's Aero transparency now (see screenshot ):
      • CBCGPEdit
      • CBCGPEditListBox
      • CBCGPCalculator
      • CBCGPColorBar
      • CBCGPSpinButtonCtrl
      • CBCGPButton
      • CBCGPMenuButton
      • CBCGPColorButton
    4. Added new controls:
      • CBCGPGroup: dialog box group
      • CBCGPComboBox: combo box
      • CBCGPSliderCtrl: slider control
      • CBCGPProgressCtrl: progress control
      • CBCGPListBox: Office 2007-style list box control
      • CBCGPStatic: static text control
  8. Enhanced Vista Aero Support:
    1. CBCGPDialog::EnableAero method was added. Using this method a developer can add "Aero Glass" either to the whole dialog box, or to the one of its edges (see screenshot ).
    2. All toolbar/menu elements and dialog controls are "Aero-compatible" now (see screenshot ).
  9. Added the new class CBCGPExplorerToolBar (see screenshot ):
    1. Built-in Navigation Buttons
    2. Built-in history menu button
    3. Support for Vista's Aero
  10. The new class CBCGPProgressDlg (see screenshot ) has been added (please take a look at the new sample ProgressDialogDemo to see this dialog in action). This dialog offers the following features:
    1. Progress indicator
    2. Progress percentage
    3. Owner-draw header
    4. Animation
    5. Theme support
  11. The following new examples and samples have been added:
    1. BCGPGanttDemo (see screenshot ): demonstrates the new Gantt control
    2. BCGPMediaPlayer (see screenshot ): demonstrates the new Skinned dialogs technology and the new explorer toolbar controls
    3. ProgressDialogDemo (see screenshot): demonstrates usage of new CBCGPProgressDialog class.
    4. SkinnedDialog (see screenshot): demonstrates themed dialogs technology.
  12. The following examples and samples have been modified to demonstrate New features:
    1. BCGPIE7Demo utilizes the new explorer toolbar now.
    2. BCGPOrganizer includes the new "Gantt" tab.
    3. BCGPCalendarDemo demonstrates a multi-resource planner.
    4. BCGPVisualStudioGUIDemo: the "Class View" has an embedded splitter control.
    5. BCGPMSOffice2007Demo: demonstrates a skinned dialog bar.
    6. RibbonGadgets: demonstrates new radio buttons and vertical sliders.
    7. PropSheetDemo: demonstrates skinned property sheets
  13. The following new methods have been added to the CBCGPVisualManager class:
    1. OnFillListBoxItem
    2. OnDrawRadioButton
    3. OnFillPlannerWeekBar
    4. OnDrawGridHeaderMenuButton
    5. OnDrawGridSelectionBorder
    6. GetGanttColors
    7. DrawGanttChartBackground
    8. DrawGanttItemBackgroundCell
    9. DrawGanttHeaderCell
    10. DrawGanttHeaderText
    11. FillGanttBar
    12. OnFillDialog
    13. GetDlgBackBrush
    14. OnDrawPushButton
    15. GetURLLinkColor
    16. OnDrawGroup
    17. OnDrawSliderChannel
    18. OnDrawSliderThumb
  14. Miscellaneous additions and changes:
    1. Significantly improved the Tasks Pane look in Visual Manager 2007 and Visual Manager 2003 (under Windows Vista).
    2. Added the new methods RemoveToolsPage and RemoveAllToolsPages to the CBCGPToolBoxEx class
    3. CBCGPMDIChildWnd has the new method: BOOL IsPrintPreview
    4. CBCGPStatusBar::SetPaneIcon has a new, optional parameter 'BOOL bAlphaBlend'. Set it to TRUE if you're adding a 32-bit icon to a status bar pane.
    5. CBCGPDrawManager::DrawAlpha has a new, optional parameter 'BYTE nOpacity'
    6. CBCGPURLLinkButton uses the new CBCGPVisualManager::GetURLLinkColor method to set URL text color.
    7. CBCGPControlRenderer::CopyTo method has been added.
    8. CBCGPShadowRenderer provides a better menu shadow look.
    9. CBCGPMemDC constructor has a new, optional parameter 'BYTE alpha' that allows to use this class along with the Vista Glass background.


  1. Fixed some visual problems with Ribbon font size under the Windows Vista
  2. CBCGPRibbonColorButton scales the color box if the large font is used.
  3. Enabled/disabled state of CBCGPDateTimeCtrl embedded spin control is automatically synchronized with the date/time control state.
  4. Fixed a bug with CBCGPScrollBar double-click.
  5. Fixed some bugs with positioning of the Ribbon mini-toolbar.
  6. CBCGPFontProp::IsValueChanged returns the correct value now.
  7. CBCGPRibbonStatusBar::RemoveElement removes the element's label too.
  8. Fixed some visual problems in the CBCGPDrawManager::DrawShadow method.
  9. Fixed bug in the PngToBitmap internal method.
  10. UnlockWindowUpdate is not called if LockWindowUpdate fails. This improves performance of loading saved state.
  11. Double-clicking on inactive Ribbon tab doesn't minimize the Ribbon now.
  12. The minimized ribbon dropped-down panel is displayed now in the screen bounds of the Ribbon.
  13. When the ribbon control (such as edit or combo box) is focused the Ribbon doesn't scroll pages on mouse wheel event.
  14. The width of the Ribbon system buttons is calculated correctly now when the Vista's Aero is enabled and the parent frame doesn't have some default system buttons.
  15. Fixed problem with Ribbon flickering after DWP composition has changed (Vista Aero only).
  16. Fixed some problems with IME in CBCGPMaskedEdit.
  17. Fixed integration problem in Application Wizard for VS 2008.
  18. Alt + menu bar keyboard shortcut is disabled now when the menu bar is not visible (e.g. full screen or print preview modes).
  19. Fixed some problems with IME and UNICODE in the ribbon edit control.
  20. Fixed some problems with the Mini toolbar shadow.

Version 9.56. Released 12/12/2007

New features:

  1. The library is fully-compatible with Microsoft Visual Studio 2008 ("Orcas") now. The following features have been implemented:
    1. Integration and Build wizard
    2. VS 2008 Application Wizard
  2. Implemented a new visual manager "CBCGPVisualManagerVS2008" which allows to create applications with Microsoft Visual Studio 2008 ("Orcas") look (see screenshot ). Please note that this implementation is preliminary and we'll add some missing features such as transparent docking markers in one of the future library versions.
  3. Added new examples:
    1. BCGPIE7Demo: Internet Explorer 7-style application (see screenshot ). This example demonstrates the following features:
      • "Aero"-style docking bar with embedded custom-draw controls
      • IE 7-style navigation buttons
      • IE 7-style MDI tabs
      • Auto-hide menu bar
      • Full-screen mode
      • IE 7-style navigation pane ("Favorites"/"History")
    2. BCGPShopDemo: another demonstration of customized Visual Manager (see screenshot ). The key features are:
      • Toolbars and menus with custom colors
      • "Semi-transparent" docking panes
      • Custom docking captions and tabs
      • Floating docking panes with shadows
      • Fixed-size palettes
      • Context toolbars
  4. Ribbon additions:
    1. Added support for ribbon horizontal scrolling (see screenshot ). This feature is handled automatically by the library, so no any changes in the code are required.
    2. The ribbon doesn't change a document selection when a user clicks outside popup window such as gallery, menu or drop-down list.
    3. The ribbon popup panels and menus are using transparent layered shadows now.
    4. The ribbon automatically disappears now when the main frame is less than 300 pixels wide and 250 pixels tall to provide more space for displaying the document.
  5. CBCGPVisualManager2007 allows to define custom color themes now (see screenshot ): there is a new 'SetCustomColor' method. Please take a look at BCGPMSOffice2007Demo example to see this cool feature in action.
  6. Added ability to display tooltips with fixed (predefined) widths. A new CBCGPToolTipCtrl::SetFixedWidth method allows to set 2 predefined widths for tooltip with large and small images. Because this feature was designed especially for ribbon control, we've added the following methods to CBCGPRibbonBar class: SetTooltipFixedWidth, GetTooltipFixedWidthRegular and GetTooltipFixedWidthLargeImage.
  7. Significant performance improvements:
    • Improved PNG images loading time.
    • Improved Office 2007-style element painting.
    • Improved editor performance.
    • Improved performance of docking control bar and toolbar painting.
    • CBCGPToolTipCtrl drawing is much more smooth and fast now.
  8. CBCGPWinXPVisualManager has better implementation for drawing elements under the Windows Vista (see screenshot ). The following GUI elements have the new, fresh look: menu, toolbars, docking pane captions, tooltips and more.
  9. CBCGPVisualManager2003 implements now a blue theme under the Windows Vista ("Aero" and "Basic" themes only) (see screenshot ).
  10. CBCGPColorButton can be created in "ribbon" (gallery-style) mode (see screenshot ). To create the Office 2007-style color button in your dialog you need:
    1. Pass TRUE to CBCGPColorButton constructor
    2. Setup color palette using new access method CBCGPColorButton::GetRibbonButton

    Please take a look at BCGPMSOffice2007Demo example (COptionsPage class) to learn how to use this new mode. Important: this mode can be used in Ribbon-based applications only.

  11. CBCGPColorPickerCtrl has a new style: PICKERH (see screenshot ). Please take a look at BCGPControls example application ("Color Controls" page) to see this new mode in action.
  12. CBCGPInplaceToolTipCtrl class is exportable now: the developer can use Office-style in-place tooltips directly in his application.
  13. CBCGPEditCtr/CBCGPEditViewl additions:
    1. New method 'SetMouseWheelSpeed' allows to customize mouse wheel speed.
    2. Added new methods 'AddEscapeSequence' and 'IsEscapeSequence'. This allows to define user-defined escape sequences (such as '\"') to prevent treating "in-string" characters as the end of block. The schema XML files were updated for using this feature as well.
    3. A developer can disable the application window when a "Find/Replace" dialog is being invoked in CBCGPEditView: DisableMainframeForFindDlg/IsDisableMainframeForFindDlg attributes were added.
  14. Added ability to lock/unlock rebar panes. There are 2 new methods in CBCGPReBar class: LockBars and IsLocked.
  15. Added support for restoring application state after hibernation. the WM_POWERBROADCAST message handler has been added to all frame classes.
  16. CBCGPDBGridCtrl::ParseURL was renamed due to VS 2008 linking problem. The new name is ParseURLString.
  17. Added access method CBCGPFullScreenImpl::GetFullScreenBar
  18. GLOBAL_DATA class was renamed. The new name is BCGPGLOBAL_DATA. Generally, this rename shouldn't affect any existing projects. In addition, some internal (non-exportable) library classes were renamed too.


  1. Resolved problems with running VS 2008-compiled modules under OSs with the common control version 6.0 or less.
  2. The global font has a correct size now when application is running under Windows 2008 Server or Windows Vista with a "Classic" theme.
  3. Fixed resource leaks CBCGPOutlookWnd::RebuildToolBar, CBCGPFileDialog::OnInitDone and CBCGPPropertySheet::InternalAddPage methods. In the previous versions in some cases previously loaded icons were not destroyed.
  4. Fixed bug with location of mini-toolbar ("floaty") along with the context menu. In the previous versions, when the context menu was aligned near the screen edge, the mini-toolbar was not displayed at correct location.
  5. Fixed problem with restoring menu bar location by double-clicking a floating menu bar.
  6. Fixed some visual problems in auto-hide button drawing.
  7. CBCGPGridCtrl: fixed bug with inserting new columns after changing existing columns order.
  8. CBCGPRibbonComboBox is displayed correctly now when a combobox parent panel has justification flag.
  9. Fixed problem with adding 32-bit icons in CBCGPStatusBar::SetPaneIcon
  10. Fixed bug with a mouse capturing in CBCGPMenuButton's double click event
  11. CBCGPDateTimeCtrlWin correctly sends WM_COMMAND notification to the owner window now.
  12. CBCGPWorkspace::GetSectionString returns a default value if the registry data is not found.
  13. Fixed problem with the tools palette position in CBCGPImageEditDlg: in localized Windows the palette control location was incorrect.
  14. CBCGPColorDialog doesn't show unnecessary task bar window in color-picker mode now.
  15. Fixed bug with frame edge repainting in Office 2007 mode after the status bar has been hidden or shown.
  16. Fixed bug with copying of images under the Vista: CBCGPToolBarImages has a new method 'Copy' that correctly works under all OSs.
  17. Toolbox images are correctly repainted now after the system color theme changing
  18. Fixed bug in toolbox scrolling.
  19. Toolbox item text is visible in the high-contrast black mode.
  20. CBCGPPrintPreviewView doesn't hold the library resource handle.
  21. Fixed bug with using localized resources in CBCGPRibbonCustomizePage
  22. The ribbon customization dialog doesn't show duplicate items.
  23. The ribbon height is calculated right if the ribbon doesn't have any large buttons.
  24. The ribbon default (collapsed) panel button doesn't show the panel when its key has been invoked and panel is not collapsed.
  25. The ribbon main (application) button image is not shifted when the button is pressed.
  26. The text of ribbon elements located right to a ribbon tab is horizontally aligned with the tab labels.
  27. CBCGPMDIFrameWnd::GetInPlaceActiveItem doesn't fail in the print preview mode now.
  28. Improved gradient filling of the right-side application bars in Office 2003 look.
  29. Fixed problem with location of spin control in CBCGPDurationCtrl
  30. Fixed bug with overlapping tab control frames in the tab groups mode.
  31. Fixed bug with the ribbon layout when application is running for the first time under the Windows Vista.
  32. The ribbon bar doesn't draw the caption bar empty buttons when application is running under the Windows Vista with Aero. In previous versions this bug caused drawing a black dots near the main button in some visual managers.
  33. The ribbon pull-down menus don't display animation if they are invoked using keyboard shortcuts.
  34. Scrolling the mouse wheel dismisses the ribbon mini-toolbar.
  35. CBCGPRibbonColorButton preserves the color box size when the object is being copied to another panel.
  36. Fixed bug with application icon drawing on the "aero" caption bar. In the previous versions, when the ribbon bar was completely hidden, the icon with the color depth less than 32 bpp was not painted on the "aero" caption bar.
  37. Fixed bug with displaying docking bars as MDI tabbed documents in full-screen mode. In the previous versions this bug caused abnormal MDI tabs appearance when the program was displayed in the full-screen mode for the first time.
  38. Fixed bug with the full-screen mode when the active view is CBCGPTabView. In this case layout of menu bar was calculated incorrectly.

Version 9.55. Released 9/4/2007

New features:

  1. Added .PNG image support for the following product components such as:
    1. CBCGPButton
    2. CBCGPHotSpotImageCtrl
    3. CBCGPPropertySheet
    4. CBCGPRibbonStatusBarPane
  2. The .PNG image support can be excluded from the product now. In addition, you can use built-in PNG Lib instead of GDI+ in VS 2002 or higher. The following pre-processor definitions can be uncommented in BCGCBProConfig.h file:
    1. BCGP_EXCLUDE_PNG_SUPPORT: don't use PNG images anywhere. Please note: if you uncomment this, you cannot use Office 2007 styles anymore, because starting version 9.54 all these styles are PNG-based.
    2. BCGP_EXCLUDE_GDI_PLUS // For VS 2002 or higher only: use built-in PNG Lib instead of GDI+.
  3. MS Office 2007-style DLLs have a version number prefix now: for example, MS Office 2007 Blue theme DLL in version 9.55 has the following file name: BCGPStyle2007Luna955.dll
  4. GLOBAL_DATA has a new method: Resume. This method restores external references (such as pointers to DLLs and external procedure addresses) and can be used for restoring application state after hibernation. Just catch WM_POWERBROADCAST message in your application and call globalData.Resume () in case wParam is set to PBT_APMRESUMESUSPEND (see our examples for implementation details).
  5. CBCGPVisualManager2007: MDI child system buttons located on the menu bar have Office 2007 look now.
  6. CBCGPRibbonEdit class has a new protected method: CreateSpinButton. Calling this method allows to create spin buttons in CBCGPRibbonEdit-derived classes.
  7. CBCGPRibbonPanel has a new attribute: m_bPreserveElementOrder (SetPreserveElementOrder/IsPreserveElementOrder access methods were added). Setting this attribute to TRUE allows to preserve panel elements order during reposition of elements .
  8. CBCGPPropList additions:
    1. A selected property list group is expanded/collapsed by pressing ENTER key now.
    2. Added a new method 'CommitModifiedValues' (see the following request on the forum )
  9. CBCGPEditCtrl additions:
    1. DoFindText is virtual now.
    2. Added a new method 'SetColorBlockStrLenMax'. This allows to define user-defined words (with length more than 4 characters) in XML editor schema.
  10. Added a new sample: HotSpotDemo. This sample illustrates usage of the CBCGPHotSpotImageCtrl class.


  1. Active CBCGPDropDownList didn't pass the keyboard messages to the active view when a parent CBCGPRibbonCombobox doesn't have embedded edit box.
  2. The size of MDI child icon placed on the menu bar is calculated correctly now.
  3. When menu item has user-defined image and no menu animation is available, the user-defined image wasn't redrawn until menu item is not highlighted.
  4. The ribbon status bar information pane incorrectly displayed a text with "&": a letter with underscore appeared instead of "&".
  5. CBCGPToolTipCtrl probably kept a pointer to a freed toolbar button.
  6. GetSDWndClassName: LPCTSTR replaced by CString: this fixes referencing to a temporary class name.
  7. CBCGPEdit didn't show File Dialog when the file name typed in the edit box is incorrect.
  8. Fixed bug in CBCGPPopupWindow::SetAnimationSpeed: when animation speed in popup (desktop alert) window was 1, the popup window is not displayed anymore.
  9. Fixed bug in CBCGPPopupWindow::ProcessCommand: the shadow of menu dropped from popup (desktop alert) window was not completely repainted on semi-transparent popup.
  10. Image edit dialog didn't draw image bottom line on Preview Area.
  11. Image edit dialog: fixed problem with tools palette layout in the "Extra Large Fonts" mode.
  12. CBCGPVisualManager2007 incorrectly repainted frame captions after Visual Manager activation "on the fly".
  13. CBCGPCaptionBar border had an inconsistent look when control is placed on the dialog (CBCGPVisualManager2003 or higher).
  14. Center-aligned toolbar combobox had a wrong position after dropping to the floating multi-row toolbar.
  15. CBCGPFileDialog didn't show the first page when an application is executed under Windows Vista
  16. If the file dialog logo was wider than the dialog, the image was centered horizontally anyway.
  17. Fixed problem with redrawing selected item in alternative ("Alt" is hold) toolbar customization mode.
  18. Toolbar customization menu is not displayed now when the toolbar element (such as combobox) is being stretched.
  19. The edit list box selected item "Browse" button is not overlapped now by the vertical scrollbar.
  20. CBCGPFrameImpl::ProcessKeyboard don't allow to process keyboard input if related frame window is disabled.
  21. The property list in-place tip is removed from the screen now when the list is being scrolled.
  22. Double-click on property list description area (on bottom) performed the default action on selected item.
  23. Menu button shadow was repainted partially if animation mode is Unfold or Slide, and menu was displayed on the top of the parent menu button.
  24. Fixed problem with redrawing of menu shadow in RTL applications under Windows Vista.
  25. Scroll down button of popup menu was not properly redrawn in some visual managers.
  26. Fixed problem with scrolling of large popup menus with a focused submenu item.
  27. Ribbon Glass Area is dismissed now when the Ribbon Bar is being hidden during OLE in-place activation (under the Vista/Aero only).
  28. Fixed problem in CBCGPMDIFrameWnd::ActiveItemRecalcLayout related to OLE in-place activation.
  29. CBCGPVisualManager2007, Black Theme: menu bar button text was invisible in customization mode.
  30. CBCGPVisualManager2007: the popup (desktop alert) caption text was almost invisible.

Version 9.54. Released 8/9/2007

New features:

  1. Added support for owner-draw scrollbars (see screenshot ). The new class CBCGPScrollBar implements an owner draw scroll bar. The library creates Microsoft Office 2007-style scroll bars automatically for all Ribbon elements like galleries. In addition, you can enable Microsoft Office 2007-style scroll bars for Grid, Planner and Property List controls: there are new SetScrollBarsStyle/GetScrollBarsStyle methods in CBCGPGridCtrl, CBCGPPropList and CBCGPPlannerManagerCtrl classes.
  2. CBCGPToolBarImages class supports now .PNG image format: to use this image type just add .PNG image(s) to "PNG" resources and pass the image ID to CBCGPToolBarImages::Load. All Office 2007-style image resources (both in style DLLs and examples were converted to .PMG image format and it dramatically reduced the binary module sizes.
  3. Added Microsoft Active Accessibility support for Ribbon Control.
  4. The product was thoroughly tested under Beta 2 of Visual Studio 2008 ("Orcas"). In general, this is not a new feature, but we think that this information will be important to our customers who is planning to port their products to Visual Studio 2008 soon.
  5. Added a lot of new examples and samples:
    • DrawCli (see screenshot ): Demonstrates how to make a regular MFC application using the library with Ribbon Control.
    • BCGPOrganizer (see screenshot ): Office 2007-style application with 5 different views - Start Page, Calendar, ToDo List, Mail and Macros.
    • MDIEditorDemo (see screenshot ): Demonstrates how to use the Advanced Edit Control in an MDI application.
    • MenuLogo (see screenshot ): Illustrates how to enable and draw "menu logo". Menu logo is a vertical area at the left side of menu bar, where a developer can draw text, images and fill this area with some color (or gradient color).
    • MenuCustomDraw (see screenshot ): Demonstrates owner draw menu images.
    • RegistryDemo (see screenshot ): Shows how to use CBCGPRegistry class to write and read to/from Windows registry various data types.
    • RollupControlBar (see screenshot ): Demonstrates usage of the roll up bar.
    • ToolbarImages (see screenshot ): The sample illustrates usage of CBCGPToolbarImages class. This class is a kind of image list and all toolbars in the library display images taken from image lists. In this sample you can see how to create image lists with different toolbar effects (disabled and shadow images) and alpha-blending effects. Also it illustrates how to add images dynamically at runtime.
    • BCGCBDotNetExample was renamed to BCGPVisualStudioGUIDemo . When this application was initially created more than 5 years ago, it was intended to emulate VS.NET GUI. But now ".NET" suffix is taken away from the Visual Studio product name and also we market our .NET products. So, this name just confuses our customers and we decided to change it.

    For your convenience, we've added the new "Samples" page where you can find information about each sample application, see screenshots and download individual samples. Please visit this page and take a look at more than 60 sample programs: /Demos/

  6. All Office 2007-style resource files can be included in the statically-linked projects together: in the previous versions only one of Office 2007-style resource can be used in the static projects.
  7. CBCGPPlannerManagerCtrl has a lot of new styles. Use them in order to customize the planner control appearance according to your requests:
    • BCGP_PLANNER_DRAW_APP_NO_MULTIDAY_CLOCKS: draw time as text in the MultiDay Appointments
    • BCGP_PLANNER_DRAW_APP_DURATION_SHAPE: draw advanced shape in appointment duration area (as in Office 2007 calendar)
    • BCGP_PLANNER_DRAW_APP_NO_DURATION: prevent drawing of appointment duration bar
    • BCGP_PLANNER_DRAW_APP_NO_IMAGES: prevent drawing of appointment icons (expect recurrence images)
    • BCGP_PLANNER_DRAW_APP_NO_RECURRENCE_IMAGE: prevent drawing of appointment recurrence images
    • BCGP_PLANNER_DRAW_VIEW_NO_DURATION: hide the planner view duration bar

    Please take a look at the BCGPCalendarDemo example to see these features in action.

  8. New method CBCGPVisualManager::GetPlannerAppointmentTimeColor allows to customize appointment time color
  9. Added new method 'CBCGPRibbonCategory::RemovePanel. Using this method developer can remove or detach a panel from the category in run-time.
  10. Added some keyboard functionality in CBCGPPropList class:
    1. The property is activated by 'Tab' key
    2. Up/Down keys rotate selection list options
    3. Enter key make the "Button click" action when the button was activated by Tab key.


  1. CBCGPFileDialog works correctly now under Microsoft Windows Vista when the library is compiled with MFC 9.0 (Vista-style file dialog is not compatible with CBCGPFileDialog).
  2. The Ribbon Main Manu is correctly displayed now when application is maximized on second monitor in the multi-monitor environment.
  3. Fixed bug with displaying application caption along with Ribbon context tab in case of few (1-2) regular (non-context) tabs.
  4. CBCGPRibbonEditCtrl correctly displayed now on the Vista's Glass Caption bar.
  5. Fixed bug with positioning of CBCGPRibbonButton when only the large icon is assigned to the button and button doesn't have a small icon.
  6. Improved the look of menu borders and shadows in Office 2007 Visual Manager.
  7. Fixed some visual bugs with menu shadows and menu resizing in RTL (Right-to-Left Layout) mode.
  8. The ribbon mini-toolbar ("floaty") is correctly aligned with related context menu in RTL (Right-to-Left Layout) mode.
  9. Fixed crash in opening of lots of pull-down menus in the Ribbon QAT.
  10. Fixed bug with using CBCGPRibbonStatusBar in non-ribbon (toolbar/menu-based) application
  11. CBCGPRibbonLaunchButton has a correct size now when it is placed on the QAT
  12. Improved Ribbon mini-toolbar ("floaty") buttons layout in multi-row mode.
  13. Fixed bug with saving text in CBCGPRibbonEditCtrl when user clicks outside of the edit control.
  14. Fixed some visual problems with Office 2007-style frame caption after frame resizing.
  15. Fixed a problem with layout of auto-hide buttons when the m_bHideInautoHideMode flag is set to TRUE and one of docking bars grouped together in auto-hide mode is closed.
  16. Method UnSetAutoHideMode is virtual now.

Version 9.53. Released 5/14/2007

New features:

  1. Added support for Microsoft Visual Studio 9.0 Beta 1 (Code Name "Orcas"). The Build and Integration Wizards are not ready yet, but you can open VS 9.0 solutions (BCGCBPro90.sln or BCGCBProStatic90.vcproj), build required DLLs/libraries and use them in your projects. All our examples/samples were thoroughly tested with VS 9.0 and no problems were detected. However, if you detect any compatibility issues, please inform us and we'll resolve them. Important note: CBCGPMenuBar::GetMenu and CBCGPPopupMenu::GetMenu methods have been replaced by GetHMenu methods. This change made due to impossibility to override virtual methods returning different types in VS Orcas.
  2. Added IE 7-style "Close" button displayed on active tabs (see the screenshot ). To use this cool feature in your programs please use the following new methods:
    • CBCGPTabWnd::EnableActiveTabCloseButton: enable/disable the feature displaying "Close" button on active tabs
    • CBCGPTabWnd::IsActiveTabCloseButton: tells whether "Close" button should be displayed on active tabs
    • CBCGPMDIFrameWnd::EnableMDITabs has a new optional parameter 'BOOL bActiveTabCloseButton = FALSE'
    • CBCGPMDITabParams: added new member BOOL m_bActiveTabCloseButton
    • CBCGPVisualManager::OnDrawTabCloseButton: override this method to customize the "Close" button appearance.

    Please take a look at BCGCBDotNetExample and MDITabsDemo samples to see this feature in action.

  3. CBCGPEditCtrl::FindWordStartFinish method is virtual now.
  4. CBCGPDockingControlBar::Slide method is virtual now.
  5. CBCGPPropertySheet in 'PropSheetLook_Tabs' mode displays icons on tabs now.


  1. Fixed bug in CBCGPFrameImpl::OnChangeVisualManager (): the MDI child window is repainted correctly in MDI tabs in all visual managers now.
  2. Ribbon bar doesn't show minimize/maximize caption buttons if its parent frame doesn't have WS_MAXIMIZEBOX/WS_MINIMIZEBOX styles.

Version 9.52. Released 5/2/2007

New features:

  1. Significantly improved Ribbon layout and performance. Now only BCGControlBar Pro provides the Ribbon look that absolutely identical to Microsoft Office 2007 layout (see screenshot ). Prior to this version all Ribbon elements had 2 states: "regular" and "compact". From now we provide the additional state: "intermediate", which allows to make ribbon layouts much more flexible and customizable. We totally revised all ribbon elements, fixed all incompatibilities in layouts/dimensions and hope that the Ribbon control now provides the most identical to Microsoft Ribbon control look among all 3-rd party products on the market!
  2. Added the ability to customize collapsing order of Ribbon control panels: SetCollapseOrder method has been added to CBCGPRibbonCategory class. Please take a look at the BCGPMSOffice2007Demo to see this new feature in action.
  3. CBCGPCaptionBar can be created as MS Office 2007-style message bar now (see the screenshot ). To enable this mode, just pass TRUE for the new optional parameter of CBCGPCaptionBar::Create - BOOL bIsMessageBarMode. You can customize the appearance of the message bar by overriding the following CBCGPVisualManager class new methods:
    • OnDrawCaptionBarInfoArea: fill information area
    • OnDrawCaptionBarBorder: draw border
    • OnFillCaptionBarButton/OnDrawCaptionBarButtonBorder: draw button
  4. Extremely improvedperformance of the Grid control! The Grid control can handle thousands rows in non-virtual mode now. Added a new static member CBCGPGridCtrl::m_bEnableAssertValidInDebug: set this member to TRUE if you wish to enable ASSERT_VALID checking in debug mode. Important note: If you derive your own class from CBCGPGridItem and directly change m_varValue member, you've to call a new CBCGPGridItem method SetModifiedFlag. Otherwise, your modification will not have effect.
  5. Ribbon palette (gallery) button has now the following major enhancements and improvements:
    • Added "Button Mode": the gallery will be initially displayed as ribbon button. SetButtonMode/IsButtonMode methods have been added to CBCGPRibbonPaletteButton class.
    • Added owner-draw galleries. Now a developer just defines gallery item size and overrides OnDrawPaletteIcon methods. Please take a look at the CRibbonTableButton and CRibbonListButton classes in BCGPMSOffice2007Demo example where we demonstrate how to create owner-draw galleries (see the screenshot ).
    • Added registered message BCGM_ON_BEFORE_SHOW_RIBBON_ITEM_MENU . This message is sent before a ribbon gallery (and other ribbon drop-down menus) is displayed. Handling this message allows to customize the gallery (menu) context before displaying it. Please take a look at CMainFrame::OnShowRibbonItemMenu in BCGPMSOffice2007Demo example where we demonstrate how to fill-up the Undo actions list, add "Recently Used Bullets" group to "Bullets" gallery and fill-up recently-used colors list in Ribbon color pickers.
  6. Ribbon color picker is derived now from CBCGPRibbonPaletteButton and has the same look as MS Office 2007 color picker (see screenshot ). In addition, the Color Picker can be embedded into the Ribbon Panel as a regular gallery gadget (see screenshot ). The following changes have been done in the CBCGPRibbonColorButton class:
    • Added new constructor with large image index parameter - now, you can create the color picker with large image by default.
    • EnableAutomaticButton has the new optional parameters: lpszToolTip - button tooltip, bOnTop - put button on top, bDrawBorder - draw border around the button
    • SetColorBoxSize/GetColorBoxSize: set/get color box size (default size is 16 x 16)
    • AddColorsGroup: add group of colors (such as "Theme Colors", "Recent Colors" and so one)
    • RemoveAllColorGroups: remove all previously added color groups.

    If you wish to customize color box appearance, please override the new method of CBCGPVisualManager - OnDrawRibbonColorPaletteBox.

  7. Ribbon undo button is also derived now from CBCGPRibbonPaletteButton.
  8. Improved look of OneNote-style tabs (see screenshot ). Now the look is similar to MS Office 2007.
  9. Added a new sample 'RibbonGadgets' (see screenshot ). This sample demonstrates how to create the various Ribbon elements.
  10. CBCGPRibbonMainPanel allows to set "Recently Used Files" group width - there is a new optional parameter in AddRecentFilesList - int nWidth = 300. In addition, you may put any custom ribbon elements to the main panel instead of MRU files list - just create a new CBCGPBaseRibbonElement-derived object and add it using the CBCGPRibbonMainPanel::AddToRight method.
  11. CBCGPRibbonComboBox can be created with an icon and label: there are 2 new optional parameters in the constructor: LPCTSTR lpszLabel and int nImage.
  12. CBCGPRibbonPanel allows to insert new elements to the given location: Insert and InsertSeparator methods have been added to this class.
  13. CBCGPTooltipManager has a new type: BCGP_TOOLTIP_TYPE_CAPTIONBAR. Use it for display custom tooltips on CBCGPCaptionBar window.
  14. CBCGPRibbonLabel can display a multi-line text now: there is a new optional parameter in CBCGPRibbonLabel constructor - BOOL bIsMultiLine = FALSE.
  15. Added 2 virtual methods to CBCGPPlannerView class: OnSelectAppointment and OnAppointmentSelected.
  17. CBCGPRibbonBar::OnShowRibbonContextMenu method is virtual now.


  1. Fixed some visual problems with menu animation in ribbon menus.
  2. Fixed some bugs with drawing icon in ribbon button.
  3. OLE in-place activation is working correctly now when CBCGPVisualManager2007 is active.
  4. Fixed some problems with RTL layout in ribbon bar.
  5. CBCGPRibbonKeyTip is correctly displayed on the multi-monitor environment.
  6. Fixed some visual bugs in drawing MDI child window border in CBCGPVisualManager2007.
  7. Fixed problem with restoring frame in CBCGPVisualManager2007: removed the unnecessary window resizing.
  8. CBCGPPropList sends update notification when the spin button in in-place edit control is clicked.
  9. CBCGPDockingControlBar correctly handles WM_SETTEXT in auto hide mode.

Version 9.51. Released 3/13/2007

New features:

  1. Added tooltip support to ribbon galleries (see screenshot ). The following methods have been added to the CBCGPRibbonPaletteButton class:
    • SetItemToolTip: set tooltip for specific gallery icon
    • GetItemToolTip: get gallery icon tooltip
    • RemoveItemToolTips: remove all gallery tooltips
  2. CBCGPRibbonStatusBar is merged now with the frame bottom edge (see screenshot ).
  3. Significantly improved behavior of ribbon mini-toolbar ("floaty"): a mini-toolbar automatically disappears when the user moves the mouse cursor far away from the initial location, and the bar transparency depends on the cursor location.
  4. CBCGPRibbonPaletteButton is automatically stretched when the parent ribbon panel is being resized: please take a look at BCGPMSOffice2007Demo - the "Style" gallery may have 6, 5, 4 or 3 items in row (see screenshot ).
  5. Added the new registered message: BCGM_ON_HIGHLIGHT_RIBBON_LIST_ITEM. This message is sent to the main frame when the user highlights one of the following elements: gallery item, drop-down list box item, color box item or custom. This message allows to add preview when a list element is selected (for example, you can temporary change document text color when the user selects a color). Please take a look at BCGPMSOffice2007Demo - the information about currently selected item appears on the status bar (see screenshot ).
  6. We have added a new sample program DlgToolTips according to many customer requests. This sample demonstrates how to use CBCGPToolTipCtrl with dialog controls (see screenshot ).
  7. The following keyboard support methods have been added to CBCGPBaseRibbonElement class:
    • virtual void OnSetFocus (BOOL bSet): called when a ribbon element receives/loses the keyboard focus.
    • virtual BOOL OnProcessKey (UINT nChar): override this method to process keyboard input inside ribbon element.
  8. CBCGPToolbarEditCtrl class is exportable now, so a developer can override CBCGPToolbarEditBoxButton::CreateEdit method and return a CBCGPToolbarEditCtrl-derived class.
  9. CBCGPRibbonBar::AddCategory has a new optional parameter 'CRuntimeClass* pRTI'. You can derive your own class from CBCGPRibbonCategory and pass it into CBCGPRibbonBar class.
  10. New method CBCGPRibbonBar::EnablePrintPreview allows to enable/disable the print preview tab in ribbon.
  11. CBCGPRibbonStatusBar introduces information mode (see screenshot ): now you can temporary hide all left-side status bar panes and replace them with one wide information pane. The following new methods have been added to the CBCGPRibbonStatusBar class:
    • SetInformation: set/remove status bar information mode
    • IsInformationMode: is status bar in information mode now?
    • OnDrawInformation: override this methods to customize information appearance.


  1. Fixed some visual problems under Windows Vista.
  2. Popup menu groups are painted using bold font now.
  3. Fixed crash in CBCGPEditView when the document is empty and the user opens Print Preview (VS 2003).
  4. Fixed problem with command notification in CBCGPRibbonPaletteIcon:::OnClick
  5. If submenu's height of the main menu exceeds the application menu height, the menu can be scrolled (see bug report )
  6. CBCGPRibbonCommandsListBox correctly calculates the text offset after the list has been emptied.
  7. Fixed a bug with the ribbon tab layout in case of a tab with wide text.
  8. Fixed bug inCBCGPMDIChildWnd::OnNcActivate: child frame controls are activated correctly now in case of owner-draw caption.
  9. CBCGPRibbonUndoButton correctly saves the number of undo actions when the button is located on popup menu.
  10. Fixed bug with painting of some fonts in the font combobox list.
  11. Improved performance of CBCGPOutlineParser.
  12. Fixed some problems in CBCGPToolBarImages::PreMultiplyAlpha

Version 9.5. Released 1/26/2007

New features:

  1. The library is fully-compatible now with Microsoft Office System UI Design Guidelines. Today BCGControlBar Pro is the only GUI toolkit on the market which maintains highest compatibility level with Microsoft Office 2007 products line!
  2. Added support for ribbon KeyTips (see screenshot ). When Alt or F10 key is pressed, small key information windows appear near corresponding ribbon elements such as tabs, buttons or menu buttons, and an user can navigate ribbon bar using keyboards and execute required commands. The following new methods have been added for KeyTips support:
    • CBCGPBaseRibbonElement::SetKeys: set ribbon element keys. For example, you can associate "F" key with an ribbon element by calling pElement->SetKeys (_T("f")). In addition, you can add "\n<Keys>" to element's label: pElement->SetText (_T("Paste\nv")) and "V" key will be associated with the "Paste" button.
    • CBCGPRibbonBar::SetElementKeys: find element by ID and associate key(s) with it.
    • CBCGPRibbonCategory::SetKeys: set key(s) for category tab
    • CBCGPRibbonBar::EnableKeyTips: enable/disable KeyTips support (enabled by default)
    • CBCGPRibbonBar::OnSetPrintPreviewKeys: allows to override built-in Print Preview keys
    • CBCGPRibbonPanel::EnableLaunchButton has a new optional parameter 'lpszKeys': specifies panel launch button key(s)
    • CBCGPRibbonPanel::SetKeys: set collapsed panel key(s)
    • CBCGPVisualManager::OnDrawRibbonKeyTip: override this method to customize KeyTip appearance in your own Visual Manager
  3. Added support for mini toolbar ("floaty") with context menus (see screenshot ). To implement this feature in your application, just call new method of CBCGPRibbonFloaty class 'ShowWithContextMenu' (please take a look at CBCGPMSOffice2007DemoView::ShowContextMenu in BCGPMSOffice2007Demo)
  4. The following ribbon gadgets have been added and improved:
    • Added a new class CBCGPRibbonUndoButton (see screenshot ): implements Office-style ribbon undo button.
    • Added a new class CBCGPRibbonHyperlink (see screenshot ): implements ribbon hyperlink button.
    • BCGPMSOffice2007Demo demonstrates how to implement Office 2007-style table palette (see screenshot ). Please take a look at CRibbonTableButton class in BCGPMSOffice2007Demo to see how to implement this kind of ribbon gallery in your application with few lines of code!
    • Added support for text alignment in CBCGPRibbonEdit: SetTextAlign and GetTextAlign methods have been added
  5. Added support for Microsoft Office 2007-style applications to Application Wizards for VC++ 6.0 and VS 2005 (see screenshot ). Now a developer can create a Ribbon-based application with a single click in few seconds!
  6. BCGPGridExamples demonstrates how to create merged cells in the grid control (see screenshot )
  7. Improved Office 2007 Aqua Style (see screenshot ). Now, this theme is more compatible with other Office 2007 themes such as Blue, Silver and Black.
  8. Now the toolkit utilizes Microsoft Office 2007 font (if installed on the client machine) that makes the text much more smooth and readable (see screenshot ). If you wish to disable this font, just set globalData.m_bUseSystemFont to TRUE and all ribbons/menus/toolbars texts will be drawn using the default GUI font.
  9. According to many customer requests, we added a new sample program MenuSubSet. This sample demonstrates how to remove specific menu items and submenus at the application startup.
  10. The following CBCGPGridCtrl class methods have been added and changed:
    1. Added new method CBCGPGridCtrl::OnPosSizeChanged: called by the framework every time the grid performs repositioning of its content.
    2. CBCGPGridCtrl::ReposItems function is virtual now.
    3. Some verification code inside CBCGPGridCtrl::AddRow and CBCGPGridCtrl::InsertRowAfter was enclosed with the _DEBUG macros for better performance.
  11. CBCGPToolTipCtrl displays an additional information such as icons if it is associated with a ribbon element. Also, the tooltip is displayed below the ribbon bar now (see screenshot ).
  12. The library automatically scales all ribbon elements when the Extra Large Font is enabled (see screenshot ). If you wish to disable this feature, just call globalData.EnableRibbonImageScale (FALSE).
  13. Added processing of standard clipboard accelerators such as "Ctrl+C" to CBCGPRibbonEdit.
  14. Added method CBCGPRibbonStatusBar::IsExtendedElement: this function allows to detect whether a status bar element is located at the regular (left), or extended (right) status bar part.
  15. CBCGPRibbonButton automatically handles the MDI Windows submenu now. Just attach a standard MDI Windows menu to a ribbon button and the library will automatically fill MDI Children list.
  16. CBCGPRibbonButton::AddSubItem has new, optional parameter 'nIndex' - you can insert a subitem at the position specified by the index.
  17. Small elements are aligned vertically at the top of panel now. If you wish to center them vertically just call CBCGPRibbonPanel's new method SetCenterColumnVert.


  1. Fixed bug in CBCGPGridRow::GetSubItems when bRecursive parameter is true.
  2. Fixed crash in CBCGPEditView when the document is empty and the user opens the Find/Replace dialog.
  3. Fixed bug in CBCGPControlBar::OnShowControlBarMenu: the library correctly makes control bar floating when "Floating" command has been invoked from the control bar's context menu.
  4. Fixed bug in CBCGPMDIFrameWnd::CreateNewWindow: the library correctly restores MDI documents at the application startup in case of non-tabbed MDI.
  5. Fixed bug with mirroring of 32-bit images in CBCGPToolBarImages::MirrorBitmap.
  6. Fixed some problems with using 32-bit images in CBCGPButton.
  7. Fixed problem with application frame layout on loading when ribbon replaces the application caption bar.
  8. The standard MDI commands such as "Tile" or "Cascade" are working correctly now when CBCGPVisualManager2007 is active.
  9. CBCGPTabWnd::OnDestroy cleans-up the button list now: this fix allows to reuse tab control after attached window has been deleted.
  10. Optimized idle processing in Ribbon Print Preview tab.

Version 9.4. Released 11/27/2006

New features:

  1. BCGControlBar Pro is fully compatible with Microsoft Windows Vista now (see screenshot )! Please run BCGPMSOffice2007Demo example under Vista (don't forget to enable Aero!) and see this integration in action. The following general features have been added and improved for the Vista support:
    • Ribbon "glass" caption. Includes semi-transparent icons on QAT, Vista-style system buttons with glove and animation and glass-style contextual caption
    • Glass borders and captions in Visual Manager 2007
    • All menu shadows are fully Vista-compatible
    • The library correctly handles DWM notifications in order to automatically apply Aero styles to frames and control bars.

    You don't need to make any changes in your source code to apply the new Vista look: all integration process is handled automatically by the library! More screenshots are available here .

  2. The following ribbon gadgets have been added and improved:
    • Added a new class CBCGPRibbonEdit (see screenshot ): implements ribbon edit box with image, text label and spin buttons. Please take a look at the BCGPMSOffice2007Demo example ("Page Layout" tab, "Paragraph" panel) to see the new control in action
    • CBCGPRibbonStatusBarPane allows to show animation on status bar pane (see BCGPMSOffice2007Demo example). You need to pass an image list to CBCGPRibbonStatusBarPane constructor and call StartAnimation/StopAnimation methods in order to add animation to status bar pane.
    • CBCGPRibbonPaletteButton allows to resize drop-down menu (see screenshot ). Call the new method CBCGPRibbonPaletteButton::EnableMenuResize to enable this feature.
    • CBCGPRibbonComboBox drop-down list is resizable (see screenshot )
    • Added a new class CBCGPRibbonPaletteMenuButton: implements a popup palette submenu (see screenshot ) and can be used in CBCGPPopupMenu instead of CBCGPToolbarMenuButton item. Please take a look at CMainFrame::OnShowPopupMenu in BCGPMSOffice2007Demo example to learn how to use palettes in application context menus.
    • You can add separators to the Ribbon QAT (see screenshot )
  3. Introduced new, Office 2007-style options dialog (see screenshot ). The new style 'PropSheetLook_List' has been added to CBCGPPropertySheet class. In addition, you can define your own property sheet headers.Call CBCGPPropertySheet::EnablePageHeader and override CBCGPPropertySheet::OnDrawPageHeader method in order to create your property sheet header. Please take a look at BCGPMSOffice2007Demo example to see this feature in action.
  4. Added a new registered message 'BCGM_ON_RIBBON_CUSTOMIZE'. This message is being sent to the frame windows when user chooses the ribbon customization. Handle this message if you wish to make your own ribbon customization, or integrate a default ribbon customization page in your "Options" property sheet. Please take a look at CMainFrame::OnRibbonCustomize in BCGPMSOffice2007Demo to see how to implement this feature.
  5. The ribbon customization menu looks now the same as in Office 2007 (see screenshot ). Use new CBCGPRibbonBar::SetQuickAccessDefaultState method in order to define a set of preferred ribbon QAT items.
  6. Now you can enable/disable ribbon tooltips by using the new method CBCGPRibbonBar::EnableToolTips.
  7. CBCGPRibbonCustomizePage allows to add a custom categories: the new method 'AddCustomCategory' has been added. Please take a look at CMainFrame::ShowOptions in BCGPMSOffice2007Demo example where we show how to add "Popular Commands" group to a Ribbon customization page.
  8. CBCGPRibbonBar has a new method: AddQATOnlyCategory. Use this method to add hidden categories, which should be shown on customization page only and should never appear on the ribbon itself.
  9. New method CBCGPRibbonBar::GetItemIDsList returns list of all or hidden ribbon item IDs.
  10. A new method CBCGPRibbonBar::ForceRelalcLayout performs full ribbon layout recalculation without using any cashed states and optiomizations. This method is useful in case of changing ribbon context "on the fly".
  11. Added image list access methods to CBCGPRibbonCategory class: GetSmallImages and GetLargeImages.
  12. CBCGPRibbonPanel::SetJustifyColumns allows to set all column elements to the same width.
  13. All library examples are 64 bit-compatible now. You can build them using VS 2005 environment and run under 64 bit OS. All examples and samples have been compiled with 64-bit compiler - you can download a zip with executables here.
  14. The following new methods have been added to CBCGPVisualManager class:
    1. OnDrawMenuResizeBar: draws menu resize bar
    2. OnDrawRibbonQATSeparator: draws separator located on the Ribbon QAT
    3. OnDrawPropSheetListItem: draws navigation list (located at property sheet left side) item
  15. CBCGPDBGridCtrl has a new virtual method 'OnBeforeAddRow'. Override this method in order to filter out database records being added to grid.
  16. CBCGPPopupWindow has a new virtual method 'OnClickLinkButton'. This method is called when user clicks URL control on popup window.
  17. CBCGPControlRendererParams has a new 'm_bPreMultiplyCheck' member.
  18. CBCGPMemDC uses OS buffered paint under Microsoft Windows Vista.
  19. GLOBAL_DATA has a new member: bDisableAero. Set this member to FALSE if you wish to disable glass effects when the program is running under Vista.
  20. CBCGPPlannerManagerCtrl::SetImages method has a new optional parameter ' COLORREF clrTransparent' - image transparent color.
  21. CBCGPCalculatorPopup window can be "tear-off" now.


  1. CBCGPRibbonRecentFilesList::FillList checks if application's m_pRecentFileList is null.
  2. CBCGPInplaceToolTipCtrl correctly displays multi-line text.
  3. CBCGPEdit::OnBrowse updates edit modify flag now.
  4. Solved Vista-incompatibility problem in CBCGPToolBarImages::CopyTo method
  5. Fixed 32-bit images bug in CBCGPTasksPane::SetIconsList
  6. Fixed bug in CBCGPPrintPreviewView in case of MDI application (VS 2003/2005).
  7. Fixed some problems with menu/keyboard navigation in ribbon-based menus.
  8. CBCGPRibbonPanel doesn't truncate the caption if the caption text is wider than elements area.
  9. Solved some problems with accessibility in the menu bar.
  10. Removed unnecessary layout recalculations in CBCGPAppBarWnd window.
  11. Some fixes in Grid control.

Version 9.3. Released 10/02/2006

New features:

  1. CBCGPVisualManager2007 implements MS Office 2007 Beta 2 Technical Refresh look (see screenshot )! The following UI elements have a new fresh look and functionality:
    • The main ribbon ("Office") button has a new look and covers a part of dropped-down menu (see screenshot ). In addition, the main button behavior is the same as in the latest Office 2007 release.
    • Changed look of ribbon quick access toolbar ("QAT")
    • The Silver Theme has the same look as in Office 2007 Beta 2 TR now (see screenshot )
  2. Added popup ribbon panels in minimized state (see screenshot ). In others words, when user clicks the category tab on minimized ribbon bar, the temporary popup category appears instead of restored ribbon. This functionality is very similar to Visual Studio auto-hide bars and allows to keep more free space for editing without loosing the ribbon functionality. This feature is provided automatically "out of the box", so no code changes are required.
  3. A new class CBCGPRibbonStatusbar has been added. This class implements Office 2007-style customizable, ribbon-based status bar control (see screenshot ). Unlike "classic" status bar, this control may host any kind of ribbon elements such as buttons, combo boxes and so one. User may choose preferred elements by using built-in status bar customization menu (see screenshot ). Please take a look at BCGPMSOffice2007Demo program to see this control in action.
  4. The following new Ribbon widgets have been added (generally, these elements were designed for using along with the new ribbon status bar, but you can use them inside any ribbon panels, menus and popups):
    • CBCGPRibbonStatusBarPane: implements status bar pane element
    • CBCGPRibbonSlider: implements slider control
    • CBCGPRibbonProgressBar: implements progress bar
  5. CBCGPVisualManager exposes the following new virtual methods for ribbon status bar custom rendering:
    • OnDrawRibbonStatusBarPane
    • OnDrawRibbonSliderZoomButton
    • OnDrawRibbonSliderChannel
    • OnDrawRibbonSliderThumb
    • OnDrawRibbonProgressBar
  6. x64 libraries and DLLs are compiled in separate folder bin64. This prevents mix-up between 32 and 64-bit program databases when both platforms are used together.


  1. Ribbon MDI print preview is working correctly now in VS 2003 or higher.
  2. Floating bars do not lose roll up state when the docking state has been restored.
  3. Fixed situation when conversion of tabbed control bar to tabbed document left an empty docking bar in place of tabbed docking bar.
  4. Fix in CBCGPGridCtrl::LoadState. Loading state for the sorting columns from registry is fixed.
  5. Fix in CBCGPGridCtrl::DoRemoveRow. Removing row with sub-items is fixed.
  6. Ribbon bar draws disabled item text using currently selected theme now.
  7. Fixed a minor problem with drawing ribbon caption in case of activating contextual tabs.
  8. Fixed some problems in closing Ribbon menus.

Version 9.2. Released 9/11/2006

New features:

  1. Added support for ribbon contextual categories (tabs) (see screenshot ). The following new methods were added to CBCGPRibbonBar class for contextual categories support:
    • AddContextCategory: add a new contextual category
    • ShowContextCategories: show categories for specific context
    • HideAllContextCategories: hide all contextual categories
    • ActivateContextCategory: activate contextual tab
    • GetContextName: get context name by context ID

    Please take a look at BCGPMSOffice2007Demo example to see this feature in action. You need to select "Insert" tab and click "Picture", "Chart" or "Table" buttons in order to activate the contextual tabs. A new object with contextual tabs will be added.

  2. Added support for Print Preview in ribbon bar (see screenshot ). Now, when the print preview mode has been activated, the ribbon bar automatically hides all categories and "Print Preview" tab becomes active.
  3. Added support for converting MDI docking bars to MDI tabbed documents (see screenshot ). The following new virtual methods have been added to CBCGPMDIFrameWnd class for MDI tabbed documents customization:
    • CanCovertControlBarToMDIChild: return TRUE to enable this feature; FALSE - to disable. By default, this feature is disabled to keep the backward compatibility
    • ControlBarToTabbedDocument: convert control bar to tabbed document
    • TabbedDocumentToControlBar: convert tabbed document to control bar

    Please take a look at BCGCBDotNetExample to see this feature in action.

  4. CBCGPRibbonBar has new methods to show/hide categories (tabs): ShowCategory and GetVisibleCategoryCount.
  5. The following new methods have been added to CBCGPRibbonCategory class:
    • SetData: set category user-defined data
    • GetData: get category user-defined data
    • GetContextID: get category context ID
    • SetTabColor: set category tab color
    • GetTabColor: get category tab color
    • IsVisible: tells whether category is visible
    • FindByData: find an element by user-defined data
  6. CBCGPVisualManager has new virtual method: OnDrawRibbonCategoryCaption. Override it if you wish to draw your own contextual category caption.
  7. CBCGPBaseRibbonElement has new methods to set/get user-defined data: SetData/GetData
  8. Added support for show/hide items in property list. New methods 'Show' and 'IsVisible' have been added to CBCGPProp class. Please take a look at BCGPControls example to see this feature in action.


  1. Fixed some problems in Ribbon layout recalculation in non-standard display modes
  2. Fixed some problems in closing Ribbon menus
  3. Fixed problem with redrawing text in CBCGPOutlookWnd caption
  4. CBCGPToolBar::OnGetButtonText returns text length when lParam is 0
  5. Fixed resource leak in drawing transparent images under Windows 98/ME
  6. Fixed problem in storing/loading recurrent appointments in storage.
  7. CBCGPVisualManager2007: tab label is drawn correctly now in Obsidian (black) mode

Version 9.1. Released 8/7/2006

New features:

  1. CBCGPVisualManager2007 offers a new visual style: VS2007_Silver (see screenshot )
  2. Ribbon context menu has a new item: "Minimize/Restore the Ribbon" (see screenshot )
  3. Added support for custom color palettes in CBCGPRibbonColorButton class (see screenshot ). The following new methods have been added:
    • SetPalette: set ribbon color picker custom palette
    • SetColumns: set number of palette columns
    • GetColumns: get number of palette columns
  4. CBCGPBaseRibbonElement has new virtual methods: OnEnable and OnCheck. These methods are called when element state is being changed.
  5. Grid control has the following new methods: SetSelectionBorderForActiveItem, IsSelectionBorderForActiveItem, SetHighlightActiveItem and IsHighlightActiveItem. These methods have been added in order to customize look of selected grid item.
  6. CBCGPToolTipParams has the new boolean member: m_bVislManagerTheme. Setting this member to TRUE allows to automatically show tooltips with the currently selected visual manager style. Just add the following simple code to your application' InitInstance and see the extended tooltips in all library controls (see screenshot ):
    CBCGPToolTipParams params;
    params.m_bVislManagerTheme = TRUE;
    GetTooltipManager ()->SetTooltipParams(

    You need to override new method CBCGPVisualManager::GetToolTipParams in order to define tooltip style in a CBCGPVisualManager-derived class.

  7. Added 2 new samples:
    1. MDICustomBackground (see screenshot ): demonstrates how to produce a custom drawing on MDI client area.
    2. RibbonMDIDemo (see screenshot ): demonstrates ribbon bar in MDI application with MDI tabbed groups and docking control bars.
  8. CBCGPToolBarImages has a new static member 'm_bMultiThreaded'. You have to set this member to TRUE if you're using toolbar images in different threads.
  9. Added new notification message 'BCGM_ON_CHANGE_RIBBON_CATEGORY'. The ribbon control sends this message to owner when the active category (tab) is being changed.
  10. CBCGPBarContainerManager::SetContainerRTC allows customization of docking containers. You can derive a custom class from CBCGPBarContainer and override some methods like StretchContainer and OnMoveInternalSlider.


  1. Fixed some problems in Ribbon layout recalculation.
  2. Full screen mode layout is correctly restored in case of ribbon bar.
  3. Size of docking control bars is handled correctly when a floating bar is docked by double clicks.
  4. Fixed redrawing problems in CBCGPVisualManager::RedrawAll and CBCGPVisualManager::AdjustFrames in case of multi-threaded application
  5. All ribbon disabled elements are painted correctly now in all visual managers
  6. Maximized application window is repainted correctly now when CBCGPVisualManager2007 is active.
  7. Print preview mode layout is calculated correctly now when the frame has embedded ribbon bar.
  8. Fixed bug in CBCGPGridItem::HasButton
  9. Fixed printing of the column header in the grid
  10. Added left-hand mouse settings support to the grid

Version 9.0. Released 6/28/2006

New features:

  1. The long-awaited Microsoft Office 2007 ("Office 12")-style support! Please take a look at the new example BCGPMSOffice2007Demo to see how to implement this style in your application. The following general features are introduced in Office 2007 style:
    • Ribbon Control support. "Ribbon" control (see screenshot ) was introduced by Microsoft in Office 2007. It's not just a new control - it's a new user interface ideology. Ribbon control replaces traditional toolbars and menus with tabbed groups (Categories). Each group is logically split into Panels and each panel may contain various controls and command buttons. In addition, Ribbon control provides smart layout maximally utilizing the available space. For example, if a Panel has been stretched and has no place to display all available controls, it turns into a menu button which can display sub-items on a popup menu. The following gadgets are supported by ribbon out of the box:
      • Button
      • Button group
      • Menu button
      • Combo box
      • Label
      • Check box
      • Color picker
      • Font picker
      • Palette with pull-down menu
      • File ("main") menu

      The ribbon control has customization abilities provided by customization dialog (see screenshot ) and built-in context menu (see screenshot ).

    • New class CBCGPVisualManager2007. The new visual manager implements Office 2007 look for both "ribbon-based" and "classic" (with toolbars and menus) applications. The following 3 new styles are implemented out of the box:
      1. Luna blue (see screenshot 1 and screenshot 2 )
      2. Obsidian (see screenshot 1 and screenshot 2 )
      3. Aqua (see screenshot 1 and screenshot 2 )

      Resources for the above styles are placed in new DLLs: BCGPStyle2007Luna.dll, BCGPStyle2007Obsidian.dll and BCGPStyle2007Aqua.dll. In case of static link you have to add the required Style.rc file to your project.

    • Another great addition is "Floaty". Floaty is a semi-transparent toolbar appearing right near the cursor and containing "hot" commands relevant for the current context (see screenshot).
    • The calendar control supports Office 2007 look (see screenshot ).
  2. Planner control
    2. SetDrawFlags/GetDrawFlags methods were added to CBCGPPlannerManagerCtrl class
    4. Added ability to set working hours/minutes. Added new methods SetWorkingHourMinuteInterval, GetFirstWorkingMinute, GetLastWorkingMinute.
    5. EditCut, EditCopy and EditPase are virtual now.
  3. Grid control:
    2. Added new notification: virtual void CBCGPGridRow::OnExpand (BOOL bExpand). It is called on collapsing or expanding of a group item.
    3. Added DECLARE_DYNCREATE for grid items. It is possible to create grid items via CBCGPGridCtrl::SetItemRTC, CBCGPGridCtrl::SetDefaultItemRTC by setting custom CRuntimeClass for specific column.
    4. The CBCGPGridCtrl::SetItemRTC can recieve NULL pointer to CRuntimeClass structure in order to remove a key for specific column.
    5. Added new CBCGPGridDateTimeItem::SetDateTime function.
    6. You can toggle the state of checkitem by pressing the space key.
    7. You can align text on the header differently from the text alignment of columns. There is a new member m_nHeaderAlignment in CBCGPGridColumnsItem class. New CBCGPGridCtrl::SetHeaderAlign, CBCGPGridCtrl::GetHeaderAlign have been added.
    8. You can reserve extra space at the top and at the bottom of the grid. Added new functions CBCGPGridCtrl::SetGridHeaderHeight, CBCGPGridCtrl::SetGridFooterHeight, CBCGPGridCtrl::GetGridHeaderRect, CBCGPGridCtrl::GetGridFooterRect.
    9. Added new function CBCGPGridCtrl::GetSortedColor.
    10. Added new function CBCGPGridCtrl::UpdateColumnsChooser. You can update the column chooser.
    11. New method virtual BOOL CBCGPGridCtrl::CanDropColumn (int nNewPosition, int nOldPosition) has been added. It allows to control whether a grid header item can be dropped, or not at the specified position.
    12. Added new grid header notifications: OnHeaderDividerDblClick, OnHeaderColumnClick.
    13. Default painting of the grid handled by visual managers. Added new Office2007 look for grid header.
  4. The following CBCGPProp methods are virtual now: GetValue, SetValue and IsSelected.
  5. CBCGPBarContainerManager::SetContainerRTC allows customization of docking containers. You can derive a custom class from CBCGPBarContainer and override some methods like StretchContainer and OnMoveInternalSlider.


  1. Fixed bug with double appearance of control bar names in the context menu after one of application control bars has been re-docked.
  2. Fixed some bugs with printing and print preview in the grid control.
  3. CBCGPPopupWindow correctly restores foreground window.
  4. CBCGPDateTimeCtrl drop down and spin button edges are calculated correctly in all visual managers.
  5. Border of toolbox is painted correctly in VS 2005 visual manager.
  6. Fixed problem with clicking application non-client area when CBCGPContextMenuManager::TrackPopupMenu is idle.
  7. CBCGPToolTipCtrl correctly calculates layout for large tooltip images.
  8. Improved performance of CBCGPToolBarImages image drawing.
  9. CBCGPToolBarImages always correctly processes 32-bit images after system color has been changed.
  10. Grid'd LoadState and SaveState use the application path in the registry.
  11. Grid selection border is repainted correctly now.

Version 8.6. Released 4/5/2006

New features:

  1. Added support for multi-line tooltips with custom colors, rounded shapes and icons (see screenshot ). In addition, a developer can use the standard balloon-style tooltips along with the library GUI elements such as toolbars, menus, tab controls (see screenshot ) and create custom owner-draw tooltips (see screenshot ). The following new classes have been added:
    1. CBCGPToolTipCtrl: the base class for user-defined tooltips
    2. CBCGPTooltipManager: manages relations between tooltips and library controls

    CBCGPWorkspace class has the new method: InitTooltipManager. Call this method in application's InitInstance to initialize the tooltip manager.

    Please take a look at the new sample program TooltipDemo to see the new tooltip control in action.

  2. The look of all GUI elements is adapted to Windows Vista
  3. CBCGPWinXPVisualManager utilizes more Window XP Theme elements to provide a "more native" Windows XP look (see screenshot )
  4. All DLLs and libraries are located now within the single folder: "bin". The versions for VS.NET, VS.NET 2003 and VS 2005 have "70", "71" and "80" suffixes.
  5. The following new samples have been added:
    1. TooltipDemo: illustrates the new tooltip control and tooltip manager
    2. ToolBoxDemo: demonstrates usage of CBCGPToolBox and CBCGPToolBoxEx classes.
  6. Planner control:
    1. The new BCGP_PLANNER_BEFORE_UPDATE_APPOINTMENT message enables developers to commit or cancel an appointment update action.
    2. Added the new BCGP_PLANNER_DROP_APPOINTMENTS message. This message will be sent after appointment has been dropped to the planner view. By default, a new virtual method 'OnAppointmentsDropped' is called.
    3. Enhanced keyboard support: the Esc key cancels appointment resizing and the Tab key selects next appointment.
    4. Methods CBCGPPlannerManagerCtrl::SelectAppointment and CBCGPPlannerManagerCtrl::ClearAppointmentSelection are public now.
    5. New method CBCGPPlannerManagerView::SetManagerCtrlRTC allows using the planner with a custom CBCGPPlannerManagerCtrl-derived class
  7. Edit control:
    1. Added new member BCGP_EDIT_COLOR_BLOCK::m_bCaseSensitive. If this member is TRUE, the editor syntax highlighting for this block is case sensitive
    2. CBCGPOutlineBaseNode::m_bCollapsedDefault specifies whether new outline blocks will be initially collapsed or not. By default this member is FALSE.
    3. New color settings in CBCGPEditCtrl class:
      • m_clrBackOutline: background color for the outline area of the editor
      • m_clrLineOutline: this color is used to paint lines in the outline area of the editor
      • m_clrBackLineNumber: background color for the line numbers area of the editor
      • m_clrTextLineNumber: this color is used to paint line numbers in the line numbers area of the editor
      • m_clrBackSidebar: background color for the sidebar of the editor
  8. Grid control:
    1. Added new methods CBCGPGridCtrl::SetRowMarker and CBCGPGridCtrl::IsRowMarker. You can use these methods to show/hide the grid row marker.
    2. New method CBCGPGridCtrl::GetColumnOrder returns a value that specifies the position of the column from left to right.
    3. Added the new method CBCGPGridCtrl::RebuildIndexes. Use this function to rebuild row indexes in the grid after inserting a row in the middle or after deleting rows.
    4. The following new registered messages have been added to the grid control:
      • BCGM_GRID_SEL_CHANGED: sent when the selection has changed
      • BCGM_GRID_ITEM_DBLCLICK: sent after the grid item double-click
    5. The following new virtual methods have been added for the print and print preview support: OnPreparePrintPages, OnCalcPrintPages, CalcPages.
    6. Added the new wrapper function CBCGPGridItem::GetInPlaceWnd. It retrieves the pointer to the in-place edit for the current cell in the grid control.
  9. CBCGPDockManager::m_pAutoHideToolbarRTC allows to implement custom auto hide toolbars (auto-hide toolbar is a control that contains auto-hide buttons).
  10. CBCGPPopupMenu has a new animation type: SYSTEM_DEFAULT_ANIMATION. This type is supported now by customization dialog out of the box.
  11. The new methods CBCGPToolBoxPage::AddButton and CBCGPToolBoxPage::GetButton provides an easy way to customize toolbox.
  12. Added ability to remove items from the property list: CBCGPProp::RemoveSubItem and CBCGPPropList::DeleteProperty methods were added.
  13. Methods CBCGPPopupMenuBar::ImportFromMenu and CBCGPPopupMenuBar::ExportToMenu are virtual now.
  14. CBCGPPopupWindow has 2 new virtual methods: GetDialogSize and OnBeforeShow
  15. Added support for Smart Docking in MDI Child frames.


  1. Fixed a lot of problems with GUI element colors in various color themes.
  2. Fixed problem with appearance of "Help" button in customization dialog.
  3. The library correctly handles CBRS_HIDE_INPLACE style.
  4. Fixed problem with minimize state of MDI children in MDITabs mode.
  5. The library correctly handles cases when minimal size has been set for docking control bars. You need to set CBCGPControlBar::m_bHandleMinSize = TRUE; (it's a static member).
  6. Fixed various problems with container/server applications.
  7. Fixed problem with wrong redrawing of appointments in the daily view.
  8. The CBCGPAppBarWnd class handles the system WM_SETTINGSCHANGE message to re-dock or reposition the bar accordingly.
  9. CBCGPColorDialog cancels the color picking mode now when user opens the dialog system menu.
  10. Fixed problem with application shut down when a menu invoked in CBCGPControlBar::OnShowControlBarMenu has been shown.
  11. A control bar is not added to the control bar menu if CanBeClosed method returns FALSE.
  12. Fixed some problems with accessibility support in menus.
  13. Fixed bug on grid column resizing: selection in the grid is updated properly now.
  14. Fixed bug on double click for read-only and disabled grid items. Double click event is handled properly now.

Version 8.5. Released 12/19/2005

New features:

Microsoft Visual Studio 2005 final release look

The following GUI elements have been changed and enhanced:

  • Smart Docking markers (see screenshot ). The SmartDockingDemo sample demonstrates how to show VS 2005 beta-style markers (see screenshot ).
  • CBCGPVisualManagerVS2005 implements the color theme identical to VS 2005 (see screenshot )
  • Docking tabs and auto-hide buttons have the same look as in VS 2005 final release (see screenshot ). If you like the rounded edges introduced in VS 2005 beta versions, you can set CBCGPVisualManagerVS2005::m_bRoundedAutohideButtons to TRUE.

Grid Control

  • The new sample application BCGPGridExample (see screenshot ) demonstrates how to use all basic and advanced functionalities of the Grid Control.
  • Virtual Mode support. You can create high-performed Grid Control with unlimited number of items. The following new methods were added to CBCGPGridCtrl for the virtual mode handling:
    • EnableVirtualMode: enable virtual mode and set a callback function
    • SetVirtualRows: define the number of grid rows in the virtual mode
    Please take a look at the BCGPGridExample application ("Virtual List" tab and "Grid Control | Virtual Mode Test" dialog) to see how to add to the grid 1 billion items. In addition, the virtual mode has been implemented in the database grids: the new 'EnableVirtualMode' method added to the CBCGPDBGridCtrl class. Run the BCGPDBGridDemo example to see this feature in action.
  • Color Themes. Added advanced support for grid item colorization (see screenshot ). The new SetColorTheme method allows to define color/gradient attributes for each grid area such as odd/even rows, groups, header, selection and more. In addition, you can define color attributes of individual grid cells using the new CBCGPGridItem methods SetBackgroundColor and SetTextColor. This new advanced technology allows to create state of the art grids in minutes! Please take a look the BCGPGridExample program ("Custom Colors" tab) to see this technology in action.
  • Cell Icons. Now grid cells support three modes: "icon and text", "icon only", "text only". The following new methods allow to implement this feature:
    • CBCGPGridItem::SetImage: associates an item with an image index
    • CBCGPGridCtrl::SetImageList: sets grid image list
    • CBCGPGridItem::OnDrawIcon: draws a cell icon; override this method for owner draw icons
  • Grid Selection. The following selection handling methods have been added to CBCGPGridCtrl:
    • GetCurSelItem
    • IsRowSelected
    • IsColumnSelected
    • GetSelectedItems
    • OnSelChanging
    • OnSelChanged
  • Miscellaneous Grid Additions:
    • CBCGPGridRow has the new method GetSubItems. Using this method a developer can access grid row subitems.
    • CBCGPGridItem::SetValue has the new optional parameter ' BOOL bRedraw = TRUE'.
    • CBCGPGridURLItem::SetURL has been added: now you can dynamically change the item URL
    • The grid sends the new notification message BCGM_GRID_ON_HIDE_COLUMNCHOOSER when an user hides the column chooser.
    • CBCGPGridCtrl::EnableHeader has the new optional parameter 'DWORD dwFlags'. The following flags can be applied: BCGP_GRID_HEADER_MOVE_ITEMS - allows to move header items, BCGP_GRID_HEADER_HIDE_ITEMS - allows to hide header items and BCGP_GRID_HEADER_SORT - enables sorting of columns.
    • CBCGPGridCtrl::SetSelectionBorder enables/disables border around selection
    • The new methods BCGPGridCtrl::CreateItem, CBCGPGridCtrl::SetItemRTC and CBCGPGridCtrl::SetDefaultItemRTC allows to customize initialization of grid cells.
    • CBCGPGridCtrl::CanHideColumn prevents hiding of specific grid column(s)
    • The following new CBCGPGridCtrl virtual methods allow to customize the grid appearance: OnFillSelItem, OnFillLeftOffset, OnFillHeaderBackground, OnDrawHeaderItemBorder and OnDrawSelectionBorder
Planner (Calendar) control
  1. Multi-day and All Day events. Now the Planner Control supports Multi-day and All Day appointments out of the box (see screenshot ). An All Day event can be defined by the new CBCGPAppointment's method 'SetAllDay'.
  2. The planner control has read-only mode: the new CBCGPPlannerManagerCtrl::SetReadOnly method has been added. Set this flag to TRUE to prevent changes in the planner control.
  3. The new method CBCGPPlannerManagerCtrl::SetShowToolTip allows to display tooltips over appointments.
  5. The CBCGPPlannerManagerCtrl methods UpdateCalendarsState and UpdateCalendarsSelection have the new optional parameters 'CBCGPCalendar* pWndCalendar'. It allows to synchronize planner context with different calendar controls.
  6. The new method CBCGPPlannerManagerCtrl::Print allows printing without the Document/View framework (e.g., in dialog application or Active X control).


  1. Added ability to add/change/delete menu icons in customization mode.
  2. Creating the control bar context/toolbars menu is much easier now: the following method has been added to the frame classes: EnableControlBarMenu. Instead of adding control bars/toolbars menus to the resources and handling OnView/OnUpdateView for each control bar, just call EnableControlBarMenu in your CMainFrame::OnCreate and the rest will be handled by the library (useful for new applications, the existing applications should work as before).
  3. The new method CBCGPToolBoxPage::SetMode allows to display a toolbox page in various modes (see screenshot ).
  4. CBCGPMenuButton has the new member 'BOOL m_bDefaultClick'. Setting this member to TRUE allows to define a default action for a menu button (clicking on text/image area, not on arrow). (see screenshot )
  5. CBCGPTabbedControlBar has two new static members:
    • m_bTabsAlwaysTop: allows to display docked tabs always on the top
    • m_pTabWndRTC: run-time class information of embedded tab control
  6. CBCGPMenuBar::m_bClearHashOnClose has been added. If this member is TRUE, all temporary menu files are immediately deleted when the menu bar has been destroyed. Before this change the temporary files were deleted on the application exit. This flag can be useful in multi-frame applications where the menu bar is created and deleted many times on the fly.
  7. The new static member CBCGPSlider::m_pSliderRTC allows to define the slider run-time class.
  8. CBCGPDrawManager::GrayRect has the new optional parameter 'clrDisabled'.
  9. The new notification message 'BCGM_ON_MOVETOTABGROUP' is sent to the main frame window when the user moves an MDI child window from one tab group to another.
  10. CBCGPOutlookWnd::AddControl has the new optional parameter dwBCGStyle. You can modify the page style by setting this parameter to a specific value (for example, you can make a detached page non-closable).
  11. CBCGPDateTimeCtrl::m_monthFormat allows to define the month format: short, full or numeric
  12. CBCGPPropList::SetDescriptionRows defines the number of text rows in the property list description area.
  13. CBCGPHotSpotImageCtrl::EnableScrollBars enables/disables scroll bars appearance in control
  14. CBCGPCalendar::EnableGradientFillCaption allows to draw the calendar caption using gradient fill
  15. CBCGPVisualManager has the following new methods:
    • GetMenuItemTextColor: returns the menu item text color
    • OnDrawMenuCheck: draws menu item check box/radio button
    • IsDockingTabHasBorder: enables/disables the border around the docking tab control
    • GetPropListGroupColor/GetPropListGroupTextColor: customizes property list appearance
  16. Added ability to reduce the library size: if you don't use some library modules such as planner or tasks pane, just uncomment a specific "#define BCGP_EXCLUDE_****" in BCGCBPro.h and rebuild the library.


  1. CBCGPButton is drawing correctly now multi-line text labels.
  2. CBCGPButton correctly handles double click on checked buttons.
  3. Docking prediction band is drawn correctly when docking tabs are on the top.
  4. The new virtual method CBCGPMDIFrameWnd::CreateNewWindow is called by the framework during restoring of MDI Tabs/MDI Tabbed Groups state. This method should be overridden in a derived frame class in order to handle restored state of windows created using "Window | New Window" command.
  5. CBCGPDockingControlBar::SetMinSize is correctly handled when a docking bar resides in a container. Now the size of a docking bar can't be set smaller than defined by stretching containers.
  6. MDI Tabbed Groups icons do not disappear when moving document tabs from one group to another.
  7. Size of wrapped floating toolbars is correctly restored.
  8. The tab window correctly processes custom tooltips after the tab order has been changed.
  9. Fixed problem with URL editing in CBCGPDBGridCtrl-derived classes.
  10. The layout of toolbar menu button with a default command is calculated correctly.
  11. CBCGPToolBoxButton is not longer derived from CBCGPButton: this change dramatically improves toolbox performance if a toolbox has a lo of buttons.
  12. The color picker is working correctly when the color dialog has been invoked from the color popup.
  13. Fixed problem with appearance of "Help" button in customization dialog.
  14. CBCGPPopupDlg::HasFocus returns the correct value when application is minimized or non-active
  15. Fixed problem with displaying localized strings in UNICODE environment (date/time picker, calendar control)
  16. Fixed some problems with gradient fill of control bars in the multi-monitor environment
  17. CBCGPVisualManager2003 correctly prepares Office 2003 colors in Windows XP Silver theme
  18. "Reset" button in the Outlook bar (in Office 2003 mode) properties dialog does not clear the page list when the program has been loaded for the first time.
  19. BCGPOleAcc.dll can be unregistered and the exposed COM object supports versioning.
  20. CBCGPGridCtrl::RemoveRow deletes a row and all its sub-items properly. It correctly works in grouping and sorting modes.
  21. Fixed bugs with drag-and-drop of grid header items.
  22. Grid item text alignment in columns works properly.
  23. Fixed grid item flickering on mouse click before in-place edit.
  24. Proper grid in-place editor adjustment in AdjustInPlaceEditRect.
  25. Fixed the bug with dragging of grid header items with icons.
  26. Fixed the bug with a tooltip over the grid field chooser.
  27. The grid field chooser displays the correct system menu.
  28. The grid in-place editor correctly processes the standard keyboard accelerators such as Ctrl+X, Ctrl+C, and Ctrl+V.
  29. The Grid Control scrollbars have the correct layout.
  30. Fixed a bug in the CBCGPGridCtrl::ExpandAll methods.
  31. CBCGPEditCtrl: deleting by words with "Ctrl" key pressed.
  32. CBCGPEditCtrl: fixed a bug with the last character in the file. Fixed highlighting and cursor positioning.
  33. CBCGPEditCtrl: fixed a bug with caret positioning after Undo / Redo operations.
  34. Fixed a bug with opening an empty text file in CBCGPEditCtrl::OpenFile.
  35. Added the wait cursor for long-time operations in CBCGPEditCtrl.

Version 8.0. Released 09/23/2005

New features:

Planner (Calendar) control ( see screenshot ):

The calendar control has everything you need to include in your application a sophisticated scheduling and appointment tool. It has the following base features and each feature can be customized to suit your needs:

  • Five different views: daily, 5-days work week, weekly, monthly Appointment and scheduling
  • Appointment reminders
  • Recurring appointments
  • Concurrent appointments
  • Events
  • Integrations with the date picker control. You can select a range of days and show them on the daily, weekly or monthly view.
  • Copy/Paste operations
  • Full Drag&Drop support (you can drag appointments within a day or drop them on the date picker control).
  • Printing support
The following new classes were added:
  1. CBCGPPlannerManagerCtrl: implements calendar interface. Allows to add/update/remove appointments and show them in the various views such as daily view or weekly view.
  2. CBCGPPlannerManagerView: CView-derived class with embedded CBCGPPlannerManagerCtrl. Simplifies calendar usage in MFC document-view architecture.
  3. CBCGPAppointment: basic appointment class. This object stores start/finish time, description and other base properties.
  4. CBCGPAppointmentBaseStorage: class is an abstract class, which defines a set of generic operations that must be implemented in order to store or load appointments to/from any persistent storage, like binary file or database. Currently the library provides you with CBCGPAppointmentStorage class which implements memory storage.
  5. CBCGPRecurrenceBaseRule is the base class that defines interface that should be implemented by custom rules. The library provides some recurrence rules such as CBCGPRecurrenceRuleDaily, CBCGPRecurrenceRuleWeekly , CBCGPRecurrenceRuleMonthly, CBCGPRecurrenceRuleYearly
Please take a look at the new example BCGPCalendarDemo to see this control in action. Grid Control ( see screenshot ): The grid control provides you with the following features:
  • Unlimited number of columns and rows suitable for visual representation of any two dimensional table
  • Support for all standard data types (VARIANT)
  • Built-in data base support. The simple and flexible API allows to show a table using few lines of code and a developer is not required to have any special knowledge in Data Base programming. The grid has the following support for data-sources:
    • ODBC
    • ADO
    • DAO
    Also, a developer can easily add support for own data source.
  • Support for custom data types. You can derive a class from the base "grid item" and provide custom editing and rendering of custom items.
  • Ability to change the item type on the fly
  • In-place editing
  • Sorting by single column
  • Sorting by multiple columns
  • Ability to organize grid columns: you can show, hide columns and change columns order. The simple MS Office-like Fields Chooser is provided out of the box.
  • Ability to change sorting type and sort columns at runtime
  • Auto grouping feature. When this option is enabled, the grid control automatically creates collapsible items by the "key" column.
  • Single and multiple row selection.
  • Copy/Paste operations
  • Integration with MFC document/view architecture.
  • Support for Drag & Drop
  • Support for printing and print preview
The following new classes were added:
  1. CBCGPGridCtrl: implements base grid interface
  2. CBCGPGridRow: grid control row
  3. CBCGPGridItem: grid control item. Allows to display/edit several types of data such as number, string memo and other.
  4. CBCGPGridColorItem, CBCGPGridDateTimeItem, CBCGPGridCheckItem , CBCGPGridURLItem: out of the box grid items, that implement color picker, date/time picker, check item and hyperlink controls.
  5. CBCGPGridView: the CView-derived class with embedded CBCGPGridCtrl. Simplifies grid usage in MFC document-view architecture.
  6. CBCGPDBGridCtrl: the base abstract class that defines the interface for easy integration of the grid control with different data sources. The library implements three specific classes for working with ODBC, ADO and DAO data providers - CBCGPODBCGridCtrl, CBCGPDAOGridCtrl , CBCGPADOGridCtrl. If you need to integrate the grid control with a custom data source, just derive your class from CBCGPDBGridCtrl and implement the required methods.

Please take a look at the new examples GridCtrlDemo and BCGPDBGridDemo to see this control in action.

Report Control ( see screenshot ):

The report control allows you to create complex reports in Microsoft Office Outlook style. This control has the following features:

  • Unlimited number of columns
  • Single and multiple column sorting
  • Ability to "flag" a record.
  • Auto grouping (like grouping "by conversation")
  • Nested grouping
  • Single and multiple row selection
  • Copy to Clipboard
  • Support for Drag&Drop
  • Printing suppor
The following new classes were added:
  1. CBCGPReportCtrl: extends the functionality of the grid control and provides you with the easy way to create reports in Microsoft Outlook style. The report control uses custom row and item objects to achieve this goal.
  2. CBCGPReportView: CView-derived class with embedded CBCGPGridCtrl. Simplifies grid usage in MFC document-view architecture.

Please take a look at the new example ReportDemo to see this control in action.

Popup (Desktop Alert) Control ( see screenshot ):

Microsoft Office-style popup control allows to display short-time messages. In opposite to the standard message box, this window doesn't require from the user to close it by clicking "Ok" button and it automatically disappears after short time. The control is fully customizable and a developer can tune its look and functionality by the easy way:

  • Content can be created from an user-defined dialog resources or it can be automatically generated from given text and icon.
  • Various looks: Office 200/XP/2003, MSN Messenger and more.
  • Various animation types: fade, slide and unfold.
  • Semi-transparent background.
  • Custom events.
The following new classes were added:
  1. CBCGPPopupWindow: implements the functionality of a modeless dialog which appears on the screen to inform the user about some event.
  2. CBCGPPopupDlg: the base class for an user-defined dialog, that can be placed on the popup window.

Please take a look at the new example PopupDemo to see this control in action.

Calendar (Date Picker) Control ( see screenshot ):

The date picker control was totally redesigned and now it has the same look as Microsoft Office 2003 date picker. Also, the following New features: have been added:

  • Show multiple months
  • Integration with the new Planner control (drag-n-drop appointments, show days with appointments with the bold font, synchronization between Planner and Date Picker)
  • Month/year picker

The new class CBCGPCalendar has been added. The class CBCGPCalendarBar is kept for the backward compatibility, but we suggest to use the new class instead.

CBCGPVisualManager has the new virtual method: GetCalendarColors. Override this method to customize the calendar appearance.

Updated Visual Manager:

CBCGPVisualManager class now supports visualization of new controls. The following new virtual methods have added:

  • Popup window:
    • OnFillPopupWindowBackground
    • OnDrawPopupWindowBorder
    • OnDrawPopupWindowCaption
    • OnErasePopupWindowButton
    • OnDrawPopupWindowButtonBorder
  • Calendar control: GetCalendarColors
  • Day planner
    • OnFillPlannerCaption
    • OnFillPlanner
    • GetPlannerHourLineColor
    • OnDrawPlannerTimeLine
  • Grid control:
    • OnDrawGridExpandingBox
    • OnFillGridHeaderBackground
    • OnDrawGridHeaderItemBorder
    • GetReportCtrlGroupBackgoundColor
Updated Property List:
  1. Added ability to mark the modified properties by the bold font: the following new methods have been added: MarkModifiedProperties, IsMarkModifiedProperties and ResetOriginalValues.
  2. Added support for in-place tooltips. Now, if there is no enough space to show the property name or value, the tooltip is displayed in the same place as text, instead of the position under the mouse cursor. The new method 'AlwaysShowUserToolTip' allows to display the custom tooltip under the mouse cursor.
  3. Double click on CBCGPPropList's columns splitter adjusts the left/right column widths in 50/50 proportion.


  1. Added Microsoft Active Accessibility support for CBCGPTasksPane and CBCGPPropList controls.
  2. The library is fully 64 bit-compatible now.
  3. The Resource Smart Update feature supports the context menus now: if the context menu resource was changes, the library automatically restores the changes and new items are correctly shown in context menus.
  4. CBCGPTabWnd has the new visual style: STYLE_3D_ROUNDED_SCROLL. This style allows to use the new VS 2005-style tabs in MDI Tabs Window.
  5. DlgBars sample demonstrates now how to embed a CBCGPMenuBar object into a dialog.
  6. CBCGPMDIChildWnd has the new virtual function: CanShowOnWindowsList. Override this method in your CBCGPMDIChildWnd-derived class and return FALSE if you don't want to see the MDI child window in the list of windows in the "Windows..." dialog.
  7. CBCGPEditCtrl has the new virtual method: OnFillOutlineArea. You can override this method to customize the edit control's appearance.
  8. CBCGPURLLinkButton has new attributes:
    1. m_bMultilineText: allows to display a multi-line text in the hyperlink control
    2. m_bAlwaysUnderlineText: TRUE if always underline the hyperlink text, FALSE - underline only when control is highlighted.
    3. m_bDefaultClickProcess: TRUE - open the default shell command, FALSE - fire BN_CLICKED message to the parent window.


  1. The popup menus have the correct location when they're opened from the floating multi-row menu bar.
  2. CBCGPEditCtrl control doesn't hang-up when user tries to copy into the clipboard a large text block. Now, only small text blocks (< 120000 symbols) will be copied in RTF format, the larger text blocks will be converted to the text format.
  3. CBCGPFileDialog correctly processes file filters now.
  4. Fixed bug with transparency of CBCGPFileDialog controls .
  5. CBCGPMenuButton opens the popup menu when user presses Enter button.
  6. CBCGPMaskEdit correctly processes WM_PASTE message.
  7. The resize operation is canceled when the user hits escape during resizing of docked control bar.
  8. Fixed bug with the height of customize menu buttons.
  9. VK_PAUSE key is correctly displayed now in the keyboard accelerator strings (e.g., in toolbar tooltips)
  10. MDI Tabbed Groups: tabs are properly activated when the user closes MDI children.
  11. MDI Tab Control correctly shows 32-bit icons of MDI child windows.
  12. CBCGPOutlookWnd correctly recalculates layout when some outlook pages have been hidden.
  13. CBCGPCaptionBar::SetText doesn't make redundant calls to RecalcLayout.
  14. Fixed resource leak in CBCGPButton::SetImage (HICON hIconCold, BOOL bAutoDestroy, HICON hIconHot, HICON hIconDisabled, BOOL bAlphaBlend) method. Now hIconDisabled will be destroyed if bAutoDestroy parameter is TRUE.
  15. Docking manager correctly handles situations when a docking bar has enabled alignment different from CBRS_ALIGN_ANY.
  16. Docking layout is not broken in applications with MTI interface when the first frame is minimized.
  17. Print preview mode correctly handled in MTI applications.
  18. CBCGPEditCtrl changes the caret position only if the control has focus.
  19. Fixed problem with location of in-place edit in CBCGPPropList control: the in-place edit appears on the same place as the original text disregard the control's font.
  20. Fixed problem with mouse capturing in CBCGPPropList control: the control releases the capture upon thefirst mouse click.

Version 7.31. Released 06/02/2005

New features:

  1. CBCGPTabWnd has the new style: STYLE_3D_ROUNDED. Using this style, you can implement Visual Studio 2005-style tabs (see screenshot ).
  2. Auto-hide buttons have Visual Studio 2005 (Beta 2) look when CBCGPVisualManagerVS2005 is activated (see screenshot ).
  3. The library is compatible now with Microsoft Visual Studio 2005 ( Beta 2 ). Note: this support is available for retail version only, evaluation version doesn't support VS 2005.
  4. Added a new example: BCGPMSMoneyDemo. This program demonstrates how to create cool user interface similar to Microsoft Money 2005 (see screenshot ).
  5. TabControl sample has been fully redesigned: this sample demonstrates now all key features of tab control.
  6. Added support for custom tooltips in the tab control:
    1. CBCGPMDITabParams has the new member: m_bTabCustomTooltips (default - FALSE)
    2. CBCGPMDIFrameWnd::EnableMDITabs has the new optional parameter: BOOL bTabCustomTooltips = FALSE
    3. The new message BCGM_ON_GET_TAB_TOOLTIP was added.
    4. CBCGPBaseTabWnd has the new method: EnableCustomToolTips
  7. CBCGPDrawManager::HighlightRect has the new optional parameter 'COLORREF clrBlend'. Using this parameter you can set the base highlighting color.
  8. All calls to MessageBox were replaced by AfxMessageBox: this allows to customize message box processing by overriding CWinApp::DoMessageBox.
  9. CBCGPTasksPane::AddLabel has the new optional parameter 'BOOL bIsBold = FALSE'. Setting this parameter to TRUE allows to draw task pane labels using bold font.


  1. Fixed some problems with Active Accessibility support.
  2. Fixed problem with first tab activation in CBCGPTabView.
  3. The context menu appears on correct place in CBCGPShellTree and CBCGPShellList when the context menu key is pressed.
  4. Fixed problem with Z-order of buttons in CBCGPPropertySheet.
  5. Active tab has correct background color when High Contrast mode is on.
  6. All auto-hide buttons have the same height when some control bars don't have associated icons.

Version 7.30. Released 04/07/2005

New features:

  1. Added support for Microsoft Active Accessibility (see screenshot ). To enable this feature, you need to call new method "globalData.EnableAccessibilitySupport ()" andto redistribute BCGPOleAcc.dll (located in 'bin' folder) along with your application. Please run a new sample program 'ActiveAccessibilityDemo' to see this feature in action.
  2. All built-in images, such as image editor buttons, print preview toolbar and others, have now a new, fresh look (see screenshot ). If your application is running in 16 bpp or higher display mode, high-color images will be displayed by default. If you wish to keep old, 16 color images, you need to set the new flag 'globalData.m_bUseBuiltIn32BitIcons' to FALSE.
  3. The library is compatible now with Microsoft Visual Studio 2005 (Beta 1). Added support for VS 2005 to Application Wizard (see screenshot ), Integration Wizard and Build Wizard. Note: this support is available for retail version only, evaluation version doesn't support VS 2005.
  4. Added export to RTF in CBCGPEditCtrl: use the new method 'CBCGPEditCtrl::ExportToRTF' to export editor data as RTF.
  5. Added support for gradient markers in CBCGPEditCtrl (see screenshot ). The following new methods were added in order to enable this feature: CBCGPEditCtrl::EnableGradientMarkers and CBCGPEditCtrl::IsGradientMarkersEnabled.
  6. Added the new library-defined message BCGM_ON_PRESS_CLOSE_BUTTON. It will be sent to parent frame when user presses the close button located on caption of mini frame window or docking bar window.
  7. Significantly improved performance of toolbar and menu images drawing.
  8. Toolbar images now loaded much more faster.
  9. CBCGPPropList::AddProperty has a new, optional parameter 'BOOL bAdjustLayout = TRUE'. Setting this parameter to FALSE allows to prevent recalculating of property list layout every time when a new item is added. To adjust the items layout at the end, you need to call CBCGPPropList::AdjustLayout (this method is public now).
  10. CBCGPToolbarComboBoxButton has a new virtual method: CreateEdit. By overriding this method, you can use your own edit controls inside CBCGPToolbarComboBoxButton.
  11. CBCGPImageEditDlg color picker has "Other..." button when 16 bpp or higher image is loaded.
  12. CBCGPPopupMenu has a new static method: static void SetSendMenuSelectMsg (BOOL bSet = TRUE): if bSet is TRUE, top level frame will receive WM_MENUSELECT message when user selects a menu item.


  1. Fixed problems with appearance of High Contrast mode. All elements are displayed correctly when the High Contrast mode is on.
  2. Fixed possible memory leak in CBCGPAnimCtrl::SetBitmap
  3. Large icons are displayed correctly now in CBCGPOutlookWnd toolbar.
  4. CBCGPWorkspace::ReloadWindowPlacement doesn't show main application window if application runs with /Embedding or /Automation flags.
  5. CBCGPHeaderCtrl draws items correctly after the order of items has been changed.
  6. Fixed bug in CBCGPDateTimeProp::SetDate (see bug report ).
  7. CBCGPDurationCtrl correctly processes WM_GETFONT and WM_SETFONT messages now.
  8. Fixed problem with 24-bit bitmaps transparency in CBCGPToolBoxPage and CBCGPButton controls.
  9. CBCGPButton text is drawn correctly when control has style 'WS_EX_LAYOUTRTL'.
  10. Print preview mode correctly works in applications compiled with MFC 7.0 or higher.
  11. Solved a problem with scroll bar that became non-responsive if a floating docking bar with embedded list control was slightly dragged by mouse left.
  12. Disable default command processing in CBCGPHotSpotImageCtrl
  13. CBCGPMainClientAreaWnd::UpdateTabs doesn't cause unnecessary redraws of main frames.
  14. CBCGPMainClientAreaWnd::SerializeTabGroup doesn't crash when user-defined object is not NULL.
  15. CBCGPMainClientAreaWnd::SerializeOpenChildren saves and restores child MDI windows in correct order.
  16. Fixed problem with repositioning of days in CBCGPCalendarBar in some system locales.
  17. CBCGPToolbarSpinEditBoxButton hides spin buttons when control became invisible.
  18. CBCGPEditCtrl: fixed bug in UNICODE applications: saving file with ANSI encoding works properly now.
  19. CBCGPEditCtrl: fixed bug in Windows XP: smooth edge of screen fonts, ClearType method (Display Properties -> Appearance -> Effects)
  20. CBCGPEditCtrl: fixed bug with symbol support in UNICODE programs. "Smile" symbols work properly in UNICODE now.
  21. CBCGPEditCtrl: fixed bug with EnableOutlining and SetLineNumbersMargin. Enabling / disabling outlining now works properly. Enabling / disabling Line numbers feature now works properly.

Version 7.20. Released 02/09/2005

New features:

  1. Added support for MDI Tab Groups (see screenshot ). CBCGPMDIFrameWnd has a lot of new methods that allow you to incorporate this feature into your application: EnableMDITabbedGroups, MDITabMoveToNextGroup, MDITabNewGroup, GetMDITabGroups and OnShowMDITabContextMenu.
  2. Added support for persistent MDI state: now you can reload all MDI child documents with their window positions, sizes and Z-index at the application startup. To enable this feature, you need to use the following new methods of CBCGPMDIFrameWnd class: LoadMDIState, SaveMDIState and CreateDocumentWindow.
  3. New class CBCGPMDITabParams allows you to customize the appearance and behavior of MDI tabs.
  4. CBCGPMDIChildWnd::GetDocumentName allows you to specify any document identifier along with any additional user-defined data in order to properly load document state.
  5. CBCGPWinXPVisualManager draws caption buttons using Windows XP themes.
  6. A new sample program "OutlookMultiViews" was added. This sample illustrates how to switch between multiple views of a single document in an SDI application.
  7. CBCGPButton and outlook bar controls support now 32-bit images in Windows XP/2000/98 (see screenshot ).
  8. CBCGPButton has a new member: m_bTopImage. By setting this member to TRUE a developer can place button's image under the text label.
  9. Added ability to limit the tab size: CBCGPTabWnd has 2 new methods - SetTabMaxWidth and GetTabMaxWidth. It's useful for tabs with long names.
  10. CBCGPToolbarCustomize has a new virtual method 'OnAssignKey' that allows to enable/disable an assignment of a specific key.
  11. CBCGPPropList::HitTest has a new, optional parameter 'BOOL bPropsOnly = FALSE'. By setting this parameter to TRUE a developer can check for a property area only.
  12. CBCGPToolBar::m_dblLargeImageRatio allows to define custom size of large toolbar images.
  13. BOOL CBCGPWorkspace::ReloadWindowPlacement (CFrameWnd* pFrame) allows to load and set at runtime previously saved in the registry frame window placement (position, size and show state).
  14. CBCGPToolBarImages has a new method: ExtractIcon (int nIndex).
  15. CBCGPDropDownToolbarButton has a new static member: m_uiShowBarDelay.
  16. CBCGPMDIFrameWnd::m_bDisableSetRedraw can be set to FALSE in order to prevent flickering of MDI Tabs.
  17. CBCGPWorkspace::UseWorkspaceManager has a new, optional parameter 'bResourceSmartUpdate = FALSE'.
  18. CBCGPMiniFrameWnd::AdjustBarFrames sends the WM_NCCALCSIZE message to all control bars that belong to a miniframe window.
  19. Added SetTabSize and GetTabSize methods in the CBCGPEditCtrl class.
  20. CBCGPTasksPane::GroupCaptionHitTest method is virtual now.


  1. CBCGPBaseTabbedBar::AddTab properly checks for a window whose recent docked state should be saved.
  2. CBCGPTabbedControlBar::OnCreate - tabs of any tabbed control bar will be activated also by right mouse click by default.
  3. CBCGPColorDialog::OnColorSelect and CBCGPContextMenuManager::TrackPopupMenu are using current thread to pump idle messages (in the previous versions these methods were using current application object, which caused possible incorrect behavior in multi-threaded applications).
  4. CBCGPPropList doesn't perform mouse wheel scrolling when no vertical scroll bar is available.
  5. Fixed problem with displaying 32-bit toolbar images in the "Large Icons" mode.
  6. The menu separators are correctly drawn in multi-column menus when Office XP manager is activated (see bug report )
  7. CBCGPContextMenuManager::TrackPopupMenu correctly processes WM_QUIT message now.
  8. Fixed problem with dialog keyboard shortcuts in CBCGPEditListBox class.
  9. BCGM_CHANGING_ACTIVE_TAB message is correctly fired in case of MDI tabs.
  10. The color box in CBCGPColorMenuButton has a correct size when the large icons mode is activated.
  11. Context menu is handled correctly when shown as a result of right click on a caption button (on the docking bar or floating frame).
  12. Docking toolbars at outside edge of the application window doesn't leave junk painting on the desktop.
  13. Added WM_SIZE handler to update content on resizing in the CBCGPCalculator class.
  14. Added method CBCGPBaseIntelliSenseLB::DeleteItem to prevent memory leak after removing items from a list box (CListBox::DeleteString and CListBox::ResetContent).
  15. Fixed bug with a tab size in CBCGPEditCtrl control: now, the tab size in a very large strings is calculated properly.
  16. Fixed bug with window activation after drag-and-drop operation in CBCGPEditCtrl::OnDrop.
  17. Fixed bug in CBCGPTasksPane::EnableNavigationToolbar: task pane navigation toolbar always has small icons, even in toolbar large icons mode.
  18. Minor changes in CBCGPMiniFrameWnd::OnNcPaint: the miniframe does not reserve space for the hidden caption buttons now.

Version 7.10. Released 10/28/2004

New features:

  1. Added a new class 'CBCGPToolBoxEx' which allows to create Microsoft Visual Studio 2005 ("Whidbey")-style toolboxes ( see screenshot ).
  2. CBCGPMDIChildWnd has a new virtual method BOOL IsReadOnly (). This method should return FALSE in order to prevent document saving from the "Windows..." dialog.
  3. Added a new sample program "MDITabsDemo". This sample illustrates how to use MDI tabs and modify tab appearance on the fly ( see screenshot ).
  4. CBCGPBaseTabWnd has a new method: ClearImageList ().
  5. CBCGPVisualManager has two new methods: OnEraseToolBoxButton and OnDrawToolBoxButtonBorder. Using these methods you can customize toolbox button appearance.
  6. A new static member 'm_b3DTabsXPTheme' was added to CBCGPWinXPVisualManager class. Setting this member to TRUE allows to draw 3-D tabs using Windows XP themes.
  7. Significantly improved CBCGPWinXPVisualManager drawing methods.
  8. CBCGPMenuBar has a new method: SetMenuButtonRTC. Using this method you can replace standard popup menu items by CBCGPToolbarMenuButton-derived objects.
  9. CBCGPDockManager has a new method: ReplaceControlBar.
  10. ExpandLine and GoToLine methods were added to CBCGPEditCtrl.
  11. CBCGPTasksPane processes now OnOk and OnCancel embedded control handlers.
  12. Added horizontal scrolling to windows list in CBCGPWindowsManagerDlg.


  1. Fixed a critical bug with the version number saved in registry. This bug caused incorrect toolbar buttons and menu items loading from the registry.
  2. Fixed a problem with flickering in the print preview view.
  3. Fixed some problems with smart docking.
  4. CBCGPImageEditDlg correctly processes transparent color now.
  5. Disabled MDI child animation when maximized (a window doesn't have WS_SYSMENU flag) window is being activated.
  6. Fixed some problems in CBCGPTabWnd internal layout and drawing. In the previous versions, tabs weren't correctly reposed in case of wide borders.
  7. CBCGPTabWnd's document menu correctly processes file names with ampersands now and doesn't display them with underlined characters.
  8. CBCGPMenuBar doesn't show system menu when an MDI child window has no 'WS_SYSMENU' style.
  9. CBCGPToolbarComboBoxButton is correctly displayed when a toolbar is docked vertically and large icons are enabled.
  10. Smart docking markers are correctly highlighted when a docking control bar can't be docked at all edges of parent frame.
  11. Docking control bars do not stay opened after switch to autohide mode.
  12. Dialog bars display the popup menu with control bar states when the relevant caption button is pressed.
  13. Fixed bug with undo actions in the editor( see bug report ).
  14. Fixed ReplaceText bug in the editor ( see bug report ).
  15. Fixed HitTest bug with large outline blocks in the editor ( see bug report ).

Version 7.0. Released 10/1/2004

New features:

  1. Implemented a new visual manager "CBCGPVisualManagerVS2005" which allows to create applications with Microsoft Visual Studio 2005 ("Whidbey") look ( see screenshot ).
  2. Implemented a new docking style - "smart docking". It's similar to docking interface found in Microsoft Visual Studio 2005 ("Whidbey") ( see screenshot ). Now user can see where the dragged window can be docked. Just call CBCGPDockManager::SetDockStyle (DT_SMART) to enable this feature. You can also customize "smart docking" markers by changing their colors and shapes ( see screenshot ). See this feature in action in BCGCBDotNetExample and SmartDockingDemo demonstration programs.
  3. Added a new advanced control - CBCGPAppBarWnd ( see screenshot ). This control behaves as a window which can be docked to any side of the screen and lays outside of application area. See the new SideBarDemo sample program.
  4. Added full support for right-to-left layout. You can just create the main frame window with WS_EX_LAYOUTRTL style and the rest will be automatically handled by the library. This feature is illustrated by the newly added RTLSample sample application.
  5. A new static method CBCGPDockManager::EnableDockBarMenu allows to enable or disable additional context menu related to control bar states. This menu consists of four items: Floating, Docking, Auto Hide and Hide ( see screenshot ).

Tab control:

  1. CBCGPTabWnd has a new method EnableTabDocumentsMenu which replaces scroll buttons with a popup menus displaying a list of opened documents ( see screenshot ).
  2. CBCGPTabWnd has a new style - STYLE_3D_VS2005. Tabbed windows created with this style look similar to MDI tab window in Microsoft Visual Studio.NET 2005 development environment ( see screenshot ).
  3. Visual managers have an ability to override default border size of tabbed control bars using new methods GetMDITabsBordersSize and GetDockingTabsBordersSize.

Toolbars and menus:

  1. Toolbars with 32-bit images can be displayed now on all Windows platforms where the alpha blending feature is supported (such as Windows 98 or ME).
  2. Added support for color transformation to CBCGPToolBarImages class: a new method AddaptColors allows to change image tone color at runtime ( see screenshot ). Take a look at ColorThemeToolbar, a new sample program illustrating this feature in action.
  3. Recalculating of toolbar layout is much more efficient now.
  4. The framework can gray disabled images automatically. Use a new method CBCGPToolBar::AutoGrayInactiveImages in order to enable this feature.
  5. CBCGPToolBar class has a new method "CleanUpLockedImages", that allows to clean image list(s) in locked (non-customizable) toolbar.
  6. CBCGPToolBarImages::AddIcon has a new optional parameter "bAlphaBlend", that allows to add 32-bit icons.
  7. Added access methods to collections of images residing in CBCGPToolBar.
  8. CBCGPToolBar::IsVisible is marked as "const" now.
  9. Significantly improved menu drawing performance.

Edit control:

  1. Automatic width adjustment for the outline margin. New virtual CBCGPEditCtrl::OnUpdateLineNumbersMarginWidth function was added.
  2. Typing performance was improved when auto-outlining is on.
  3. Added new wrapper functions for line operations in edit control (GetLineCount, GetLine, GetFirstVisibleLine, LineIndex, LineFromChar, LineLength, LineScroll).
  4. Added new functions for selection operations in edit control (GetSelText, ReplaceSel).
  5. CBCGPEditCtrl::UpdateScrollBars method is virtual now.
  6. Added new virtual functions for printing by pages: CBCGPEditCtrl::OnPrintPageHeader, CBCGPEditCtrl::OnPrintPageFooter.
  7. Added new virtual function CBCGPEditCtrl::OnDrawBorder. Override it if you need custom drawing of the edit control.
  8. Added handler for the WM_GETTEXTLENGTH message. See the CBCGPEditCtrl::OnGetTextLength function.

Task pane:

  1. Option for embedded user window to be full-size in the task pane group. Call CBCGPTasksPane::EnableOffsetCustomControls() to enable this.
  2. Class CBCGPTaskPaneMiniFrameWnd is exportable now.


  1. CBCGPColorDialog has a new button - color picker. It allows to pick a color anywhere on the screen.
  2. It's possible to redefine text color of auto-hide buttons by overriding GetAutoHideButtonTextColor in CBCGPVisualManager-derived class.
  3. A new method CBCGPDockManager::DisableRestoreDockState allows to disable automatic restoring of docking state.
  4. CBCGPProp class has two new methods intended for manipulation with options: GetOptionCount and GetOption.
  5. A new method CBCGPCalendarBar::EnableShowTooltips allows to enable or disable tooltips on calendar bar.
  6. A new message BCGPM_ON_AFTER_SHELL_COMMAND is fired by shell manager when a shell command has been executed.
  7. CBCGPHotSpotImageCtrl has a new method "SetHighlightHotArea". Using this method, developer can enable "hot spot" effect without adding a "hot image" to the control. See CStartView in BCGCBDotNetExample.
  8. CBCGPToolbarComboBoxButton has a new method FindItem.
  9. CBCGPAutoHideButton has a new method "GetAlignment".
  10. CBCGPVisualManager2003 has a new virtual method GetBaseThemeColor, that allows to modify Office 2003-like appearance.
  11. CBCGPButton automatically detects Windows XP theme manifest in resources and set m_bWinXPTheme flag.
  12. When CBCGPVisualManager is changed, all toolbars will be automatically adjusted.
  13. CBCGPPropList::EnsureVisible has a new optional parameter 'bExpandParents'. Setting this parameter to TRUE allows to display collapsed properties.


  1. The library correctly processes Alt+numeric keys. (see bug report ).
  2. Fixed problem with line number drawing in CBCGPEditCtrl. In the previous versions, drawing the dotted line between row numbers and text caused incorrect control painting under Windows 9x (see bug report ).
  3. Fixed bug in the edit control: "Paste" instead of "Replace" in Undo action list.
  4. Fixed bug in CBCGPEditCtrl::GetLineCount function.
  5. Fixed bug with border drawing in CBCGPEditCtrl.
  6. Fixed bug in CBCGPEditCtrl::OnGetText function.
  7. Fixed bug in CBCGPEditCtrl with m_bIsModified flag after "Remove Selection" command.
  8. CBCGPToolBarImages. Fixed algorithm that displays disabled images on systems with 16 bit colors.
  9. State is correctly saved for control bars in auto-hide mode.
  10. CBCGPDockManager::SetDockState correctly restores state for tabbed bars calling on CBCGPBaseTabbedBar::ApplyRestoredTabInfo, instead of CBCGPBaseTabWnd::ApplyRestoredTabInfo. This allows to override ApplyRestoredTabInfo in a derived class and prevent reading tab info from the registry.
  11. A caption button is not highlighted when a popup menu is displayed and the mouse hovers over the caption button.
  12. Tabs are not swapped when user activates a context menu in the tab area and then tries to activate another tab.
  13. CBCGPBaseTabWnd::SetTabHicon automatically adjusts the default tab height now.
  14. CBCGPBaseTabWnd::SetTabsHeight calculates the tab height correctly now when no tab icons is available.
  15. CBCGPPropList::HitTest tests for description area.
  16. Improved appearance of disabled toolbar combo boxes in several visual managers.
  17. Fixed resource leak in CBCGPPropertySheet::InternalAddPage method (see bug report )
  18. CBCGPEdit "Browse" button is correctly repainted in all visual managers.
  19. User cannot drag out menu items from toolbar customization menu when Alt key is held down.
  20. Fixed problem with a large menu scrolling after user displayed all menu items (recently used menus feature is on).
  21. Changing control bar icon at runtime affects tabbed control bar tab image.
  22. CBCGPToolBar::SetMenuSizes changes disabled menu images size.
  23. CBCGPAutoHideToolBar repaints its background using default control bar methods.
  24. All floating frames are disabled now in customization mode.

Version 6.75. Released 06/25/2004

New features:

  1. Added support for seconds in CBCGPDurationCtrl: to enable the "seconds" field, just use a new flag DRTN_SECONDS. In addition, there are some new control methods: SetTextColor, GetTextColor, SetBackgroundColor and GetBackgroundColor. You can use these methods to change the control appearance.
  2. Significantly improved performance of CBCGPEditCtrl scrolling .
  3. There are some new CBCGPTasksPane methods:
    1. SetGroupTextColor: sets foreground color for a group caption.
    2. SetTaskTextColor: sets foreground color for a task
    3. EnableHistoryMenuButtons: Specifies whether "Next"/"Previous" navigation buttons should have drop-down menus with page history
    4. EnableWrapTasks: enables/disables word wrapping for task names
    5. EnableWrapLabels: enables/disables word wrapping for task labels

    Please take a look at a new sample program "TasksPane" to see these New features: in action.

  4. CBCGPDockingControlBar has a new virtual method: OnAfterDockFromMiniFrame.
  5. CBCGPToolbarButton::PrepareDrag method is virtual now.
  6. BCGPControls example demonstrates how to create custom CBCGPPropList properties ( see screenshot ) such as duration, check box, password, slider, icon list, extended combobox, owner-draw description and property with 2 buttons.
  7. CBCGPToolbarCustomize has a new flag: BCGCUSTOMIZE_NO_LARGE_ICONS. Setting this flag prevents setting large toolbar icons.
  8. CBCGPVisualManager2003 allows now to create a color theme using either Windows XP or "classic" Windows system colors. There are 2 new methods: SetDefaultWinXPColors and IsDefaultWinXPColorsEnabled. E.g., if you're using Windows XP blue theme, the toolbar color will be light blue if DefaultWinXPColors = TRUE (default) or light gray if DefaultWinXPColors = FALSE. See this feature in BCGDotNetExample sample program.
  9. CBCGPProp::AddOption has a new, optional parameter 'bInsertUnique'. By setting this parameter to TRUE, you can prevent addition of duplicate items to the option list.
  10. There are some new virtual methods in CBCGPProp class:
    1. OnDrawDescription: allows customization of property description appearance.
    2. OnClickValue: processes mouse clicks inside the value area.
    3. AdjustButtonRect: defines a custom property button size.
  11. New virtual method CBCGPPropList::CompareProps can be used for custom sorting of the property list.
  12. Improved appearance of CBCGPToolBoxPage in CBCGPVisualManager2003.
  13. A new sample program 'SetBarSize' demonstrates how to programmatically change control bar size.
  14. There is a new method in CBCGPFrameImpl: SetNewUserToolBarRTC. Using this method, you can specify your own toolbar class, that will be used for creation of user-defined toolbars.


  1. HTML help is working correctly now in the menu context-sensitive help mode.
  2. State is saved correctly for tabbed toolbars.
  3. Layout of docked toolbars is properly adjusted is some cases when a toolbar is being shown.
  4. CBCGPBaseTabWnd::RemoveAllTabs is safely removes all tabs in correct order: in the previous versions, the tab count wasn't updated during removing process.
  5. A tab being dragged does not "stuck" if the dragging process has been interrupted (see bug report )
  6. Fixed problem with updating of menu shadow in toolbar customization menu.
  7. CBCGPBaseControlBar does not assert anymore in some cases when a control bar is a member of a tabbed group and is being detached from this group.
  8. Fixed problem with restored size of application frame when the program was closed in maximized state.
  9. Fixed resource leak in CBCGPStatusBar::SetPaneAnimation.
  10. CBCGPStatusBar supports tooltips by default now.
  11. The status bar message is updated correctly now when mouse leaves a disabled toolbar button.
  12. The correct help topic appears when user clicks on a menu bar system button (such as "Minimize" or "Close") in the context-sensitive help mode.
  13. "Toolbar Reset" message box is modal now (see bug report ).
  14. CBCGPToolbarComboBoxButton::SelectItem allows to remove current selection (the index value (-1) is valid now).
  15. Fixed problem with appearance of active mini-frame buttons in some "light" visual schemes (such as WinXP Silver).
  16. CBCGPEditCtrl has a correct inactive selection background color (in some visual schemes this color was present as black).
  17. CBCGPToolBarImages correctly loads user-defined (from external file) 32-bit bitmaps.
  18. CBCGPPropList::RemoveAll cleans-up a terminal properties list.
  19. Fixed problem with appearance of some CBCGPVisualManager2003 elements when 3-d party visual managers are activated in the system (see bug report ).
  20. BCGM_CHANGE_ACTIVE_TAB message will be sent to the right parent frame when user activates outlook bar page from invisible page menu.
  21. Integration Wizard correctly integrates the library with VS.NET environment in case when VC++ 6.0 is not installed.
  22. Fixed problem with buttons location in CBCGPOutlookBarToolBar::AdjustLocations. Now the behavior of toolbar within outlook bar is more compatible with MS Outlook 2003. If you begin decrease the width of outlook bar, buttons is being hidden from right to left as expected.
  23. Fixed bug in CBCGPToolbarComboBoxButton::AddSortedItem.
  24. CBCGPToolBar::AdjustSize. Fixed bug in tabbed toolbar mode. Tab area in this mode correctly displays toolbar now.
  25. CBCGPEditCtrl::IsModified is working properly now after Undo/Redo operations.
  26. Fixed bug with outlining in CBCGPEditCtrl: sometimes, hidden line count led to incorrect scrolling.
  27. Insertion of separators is disabled for outlook bar pane: it caused crash in outlook control in customization mode.

Version 6.74. Released 04/15/2004

New features:

  1. Added support for WM_SETIMAGE/WM_GETIMAGE messages to CBCGPButton class.
  2. There are 2 new virtual methods in: CBCGP***FrameWnd classes: OnCloseDockingBar - called when the user clicks "close" button and a docking bar is about to be hidden, and OnCloseMiniFrame - called when the user clicks "close" button and a floating miniframe window is about to be hidden.
  3. Controls redrawing mechanism has been significantly improved: all controls are repainted now much more smoothly.
  4. CBCGPPropList processes now the standard keyboard accelerators such as Ctrl+C or Ctrl+V. Developer can customize this processing by overriding a new virtual method "ProcessClipboardAccelerators".
  5. CBCGPFontComboBox has a new static member: m_bDrawUsingFont. If developer set this member to TRUE, all non-symbol font names will be displayed using current font (see WordPad example).
  6. CBCGPStatusBar class has a new method: GetCount - returns number of status bar panes.
  7. The library source code is compatible now with 64-bit Windows mode.
  8. Application Wizard for Visual C++ 6.0 automatically adds Windows XP manifest file to a project.
  9. Added support for control vertical center alignment to CBCGPToolbarComboBoxButton class. To set/get this property, use the two new static methods defined in CBCGPToolbarComboBoxButton: SetCenterVert / IsCenterVert.
  10. New virtual function CBCGPTasksPane::GetMRUFileName was added. Now you can customize MRU file names in task pane.


  1. CBCGPHeaderCtrl correctly processes WM_SETFONT message.
  2. The hidden separator index is calculated correctly now in toolbar's customization button.
  3. User-defined toolbars are not duplicated now when the application exits from the full-screen mode.
  4. Fixed visual bug in CBCGPVisualManager::OnDrawTab. The 3D tab edges are painted correctly now in all visual managers.
  5. CBCGPKeyboardManager::TranslateCharToUpper treats correctly now OS language-specific characters.
  6. CBCGPEditListEdit::OnBrowse restores focus to the edit list box window after the user has clicked "Browse" button.
  7. WM_MOUSEWHEEL message is correctly processed now in CBCGPComboEdit class.
  8. Fixed bug with adjustment of toolbar size when the "Large Buttons" mode has changed.
  9. CBCGPTabWnd correctly erases window background when there are no visible tabs in control.
  10. Recent docking position is stored correctly now when FloatControlBar is called from the user code (a control bar is floated programmatically).
  11. Tabs in a tabbed window are changed during drag & drop operations.
  12. The BCGM_CHANGE_ACTIVE_TAB message is sent to the top level frame and to the parent of tab control (in previous versions this message was sent to the parent of tab control only).
  13. Fixed bug in CBCGPEditCtrl find routine. Now the editor successfully finds the word even if the caret is inside it.

Version 6.73. Released 03/11/2004

New features:

  1. Added a new, fresh look to the tab control in the Office 2003 manager ( see screenshot ). To enable this feature, just call the new static method CBCGPTabbedControlBar::EnableTabAutoColor. In addition, you can define your own color set by calling CBCGPTabbedControlBar::SetTabAutoColors.
  2. CBCGPCalculator can display user-defined buttons now (see BCGPControls example). The following new methods have been added to CBCGPCalculator class: SetAdditionalCommands, RemoveAdditionalCommands and a virtual method OnUserCommand. Also, CBCGPEdit::EnableCalculatorButton has a new, optional parameter: plstAdditionalCommands.
  3. There is a new virtual method in CBCGPVisualManager class: OnFillTab. By overriding this method, you can customize tab appearance.
  4. A new static method CBCGPKeyboardManager::ShowAllAccelerators allows to show all keyboard accelerators in a menu item/tooltip. E.g., if command "Copy" has 2 accelerators: "Ctrl+C" and "Ctrl+Ins", the following text will appear: "Ctrl+C; Ctrl+Ins".
  5. New function CBCGPTasksPane::Update () can be used to update task pane. (It recalculates task pane layout and updates its content).


  1. Adjusted size of some VS.NET-style controls such as auto-hide buttons and captions.
  2. Fixed problems with large system font: some controls were incorrectly displayed when the large system font is chosen.
  3. Fixed bug with the menu palette mode: the last selected item doesn't appear now in the first palette position.
  4. Improved "colored" shadow appearance (used in Office 2003 manager).
  5. Fixed bug in CBCGPToolbarFontCombo::SetFont. When bExact parameters was TRUE, fonts with the same prefix weren't processed correctly.
  6. The popup menu size is correctly adjusted now after the "Button Appearance" dialog has been closed.
  7. When the user shows/hides toolbar buttons from the customization menu, the parent rebar doesn't change its size now.
  8. Fixed bug with a month name position in the calendar bar.
  9. Fixed bugs in CBCGPTasksPane::RemovePage and CBCGPTasksPane::RemoveAllPages. These functions now do not delete tasks from the first page and properly update the panes history.
  10. CBCGPEditCtrl::OnDrawOutlineBar - some performance improvement for huge files.
  11. Floating tabbed control bar correctly restores its docking state after application reloading.
  12. Fixed a small bug with 3D tab appearance in Office 2003 mode.
  13. Fixed a bug with rebar mode in Application Wizard. In the previous versions, AppWizard was generating source code with incorrect docking layout and invisible docking bars in rebar mode.

Version 6.72. Released 02/18/2004

New features:

  1. A new class CBCGPCalculator was added. This is a simple calculator ( see screenshot ), that can be used as a regular or popup control integrated with toolbars or property list control.
  2. CBCGPToolbarEditBoxButton has a new method: EnableCalculator. Using it, developer can simply integrate a calculator with toolbar's edit control.
  3. Added support for MS Office-like help combobox ( see screenshot ). There are two new methods in CBCGPMenuBar class: EnableHelpCombobox and GetHelpCombobox. Please take a look at the WordPad example to see how to use this feature.
  4. Added support for hyperlinks in CBCGPEditCtrl class ( see screenshot ). Developer can specify hyperlink settings in XML file.
  5. CBCGPEditCtrl class has a new method "ExportToHTML", that allows to export editor data to HTML format (our feature tour examples were generated using this method). A new virtual method CBCGPEditCtrl::OnPrepareHTMLString allows to customize the generated HTML.
  6. New options for CBCGPOutlineParser class: new m_bCaseSensitive and m_bWholeWords members were added. Now, developer can specify the words such as "begin" or "end" as outline block tokens.
  7. A new class CBCGPEdit was added. This is a standard edit control with a browse button ( see screenshot ). The following modes are supported: browse for file, folder picker, calculator and user-defined mode.
  8. Added support for values list in the property list ( see screenshot ). Using this feature, user can enter multi values such as size or rectangle. CBCGPProp constructor has a new, optional parameter 'BOOL bIsValueList = FALSE'. A list separator (default is ",") can be defined by calling a new method CBCGPPropList::SetListDelimiter
  9. Added support for color in CBCGPFontProp class: CBCGPFontProp constructor has a new, optional parameter 'COLORREF color = (COLORREF)-1' and the CBCGPFontProp::GetColor method was added.
  10. CBCGPPropList colors are customizable now: SetCustomColors and GetCustomColors methods were added. Please take a look at BCGPControls example to see how to customize the control appearance.
  11. A new method CBCGPPropList::ExpandAll allows to expand/collapse all property list items at once.
  12. A new method 'GetAutomaticColor' was added to CBCGPColorButton and CBCGPColorMenuButton classes.
  13. CBCGPStatusBar class has a new method: SetPaneBackgroundColor.
  14. A new class CBCGPSpinButtonCtrl was added. This class is used by several library controls such as property list, date/time picker and toolbar edit box, and allows to improve spin control appearance making it more close to other library widgets.
  15. The following new methods were added to CBCGPPropertySheet class: RemoveCategory and OnRemoveTreePage. These methods are relevant for the property sheet tree mode.
  16. A new optional parameter 'BOOL bRedraw = TRUE' was added to the following CBCGTasksPane methods: ShowTask, ShowTaskByCmdId and RemoveTask. Using this parameter allows to optimize tasks pane redrawing when updating a dynamic content.
  17. CBCGPTasksPane::ReposTasks method is virtual now.
  18. CBCGPDateTimeCtrl has a new methods: SetBackgroundColor/GetBackgroundColor
  19. The following new virtual methods were added to CBCGPVisualManager class:
    1. OnDrawCalculatorButton and OnDrawCalculatorDisplay: allow to customize calculator appearance
    2. OnDrawBrowseButton: allows to customize appearance of edit box browse button
    3. OnDrawSpinButtons: allows to customize spin button appearance
  20. Added ability to define disabled image alpha value (32 bit images only). CBCGPToolBarImages::SetDisabledImageAlpha method was added.
  21. New method CBCGPEditCtrol::EnableOutlineParser allows to temporary disable the outline parser while a new document is loading.
  22. Methods CBCGPEditCtrl::UpdateOffsetRelatedData, CBCGPEditCtrl::RemoveOffsetDataInRange, CBCGPEditCtrl::UpdateLineRelatedData and CBCGPEditCtrl::RemoveLineDataInRange are virtual now.
  23. Added a new method to CBCGPEditCtrl class: SetMaxToolTipWidth.
  24. There is a new virtual method in CBCGPToolbar class: BOOL AllowAltCustomization. By overriding this method developer can disable "alternative" (Alt + mouse drag) customization for specific toolbar-derived objects.
  25. According to our customers requests, we added 4 new sample programs:
    1. StatusBarDemo: demonstrates usage of CBCGPStatusBar class.
    2. TabbedToolbar: demonstrates how to create application with a tabbed toolbar.
    3. ToolbarDateTimePicker: demonstrates how how use date/time picker integrated with toolbar control.
    4. ToolbarEditBox: demonstrates how use edit box control integrated with toolbar control.


  1. Fixed bug with control bar dragging between two desktops in the multi-monitor environment. In the previous versions, sometime the control bars "stuck" on the right desktop and it was impossible to drag it back to the left.
  2. Added processing of WM_SYSCOLORCHANGE message to CBCGPBaseIntelliSenseLB window.
  3. Added processing for OnUpdateEditPaste in CBCGPEditView class.
  4. Fixed improper redrawing of outlook bar when a detachable page was hidden/shown using ShowControlBar method.
  5. Increased size of outlook bar scroll buttons: this change improved appearance of the button in some Windows XP themes.
  6. Fixed incorrect appearance of customize menu when a menu command was selected from the chevron button of partially visible toolbar.
  7. A separator's height is calculated correctly now when CBCGPTasksPane doesn't have icons.
  8. CBCGPTasksPane's caption is updated correctly now.
  9. Fixed bug in initial activation of CBCGPPropertySheet tab: when the default tab differs from 0, the tab is correctly activated in OneNote mode.
  10. The layout of MDIChild window is calculated correctly when it has several docking control bars.
  11. Fixed problem with msimg32.dll loading under Window 95/NT 4 platforms.
  12. Fixed problem with alpha channels pre-multiplication in 32 bit bitmaps.
  13. When a control bar is floated or docked by mouse, it correctly receives the input focus.
  14. Improved performance during restoring of docking layout.
  15. Tab window tabs are activated upon left mouse down now in OneNote mode.
  16. Fixed incorrect behavior of roll-up frames.
  17. Fixed resource leak in CBCGPOutlookBarPane::AddButton (LPCTSTR szBmpFileName,....) method.
  18. CBCGPOutlineNode class has the BCGCBPRODLLEXPORT modifier now.
  19. Fixed problem with CBCGPEditCtrl scrollbar: typing text caused the hidden block to expand.
  20. Fixed bug with CBCGPEditCtrl outlining: typing string constants stopped the outlining.
  21. Fixed problem with CBCGPEditCtrl outlining when it has more then 3 hierarchy levels.
  22. Fixed problem with CBCGPEditCtrl deleting the whole content of the editor by Backspace key.
  23. Fixed the problem in CBCGPEditCtrl: no outlining for just opened files.
  24. CBCGPEditCtrl: Fixed the problem with outlining, crash on CollapseToDefinitions command.
  25. CBCGPEditCtrl: Fixed editor crash in the Overwrite mode when typing inside the outline brackets.
  26. Fixed editor problem in read-only mode: CBCGPEditCtrl::IsCutEnabled, CBCGPEditCtrl::IsPasteEnabled work properly now. Added the update command message handler CBCGPEditView::OnUpdateEditPaste for the ID_EDIT_PASTE message.
  27. Fixedbug in CBCGPEditCtrl::AddOutlining.
  28. CBCGPEditCtrl::OnSetCaret is called now when only the position of caret has changed.
  29. Alternative customization (Alt + mouse drag) is disabled in the popup menus when Ctrl key is held down.
  30. CBCGPDateTimeCtrl's drop-down button isn't covered by text when the control is too narrow.
  31. Fixed bug with redrawing of floating mini-frame border when detaching a tab.
  32. Fixed some warnings in compilation under Visual Studio.NET.

Version 6.71. Released 12/10/2003

New features:

  1. CBCGPOutlookBar has a new mode - Outlook 2003-like style ( see screenshot ). To enable this mode, developer need to call CBCGPOutlookBar::SetMode2003 method.
  2. Added support for 32-bit toolbar images. Using this feature, you can add nice looking semi-transparent images to your application. Please note, that you need to check your system by calling CBCGPToolBarImages::Is32BitTransparencySupported () method.
  3. A new method CBCGPOutlookBar::SetButtonsFont was added.
  4. The default tab order is saved now in the tabbed bars: CBCGPBaseTabbedBar::GetDefaultTabsOrder was added.
  5. CBCGPEditCtrl has a new flag: m_bSaveFileInUnicode.
  6. CBCGPEditCtrl::Print was added. Using this method, you can print edit control content without using Doc/View architecture.
  7. There are two new methods in CBCGPToolBarImages class: AddIcon and CreateFromImageList. Using these methods, developer can compose CBCGPToolBarImages from icons and image lists.
  8. Added support for the property list group collapse/expand using VK_RIGHT/VK_LEFT keys. Thanks to Emmanuil Tsagarakis for this addition!
  9. CBCGPToolBar has a new static method: GetMenuImages. Using it, developer can access the shared menu images list.
  10. All built-in animations such as menu, task pane or auto-hide are disabled now when application is started in the Terminal Services Environment.
  11. CBCGPBaseTabWnd class has the following new methods: GetTabID, GetTabByID, SetTabsOrder and virtual method OnChangeTabs.
  12. Added library-defined mask character "*" for any printable character in CBCGPMaskEdit.
  13. New data member CBCGPEditCtrl::m_bSaveFileInUnicode was added.
  14. New data members CBCGPEditView::m_bUpdateFindString was added. New method CBCGPEditView::OnPrepareFindString was added. These additions allow to exclude non-printable characters from the search condition when the string is copied from the edit control to the "Find/Replace" dialogs.


  1. Invisible locked toolbar buttons are not disabled on the chevron popup menu now.
  2. Fixed problem with calculation of CBCGPCalendarBar size.
  3. CBCGPColorButton is correctly displayed when CBCGPButton::EnableWinXPTheme was called.
  4. Fixed bug with painting of CBCGPOutlookButton border.
  5. Fixed some problems with resource allocation under Windows 9x/ME.
  6. Fixed problem with appearance of large toolbar images on the customization dialogs.
  7. Task pane's separator is painted correctly now when CBCGPWinXPVisualManager is activated.
  8. Fixed problem with repainting of spin buttons in the date/time and duration controls.
  9. Fixed incorrect state restoring for CBCGPDockingControlBar objects with the CBRS_BCGP_OUTLOOK_TABS style.
  10. Fixed incorrect state restoring for CBCGPDockingControlBar objects when the frame window is maximized.
  11. Fixed a problem with detachable tabs in tabbed groups when one or more tabs have been hidden.
  12. Fixed some problems with a popup menu of toolbar's chevron.
  13. Fixed some bugs in outline algorithms in the edit control.
  14. Fixed some problems with toolbar's flat comboboxes.

Version 6.7. Released 11/12/2003

New features:

  1. CBCGVisualManager2003 provides a new color scheme that is more close to the original Office 2003 colors ( see screenshot )
  2. Major enhancements in the edit control. Added support for collapsible nodes (outlining) ( see screenshot ). The out of the box outline parser recognizes C++ files and can be customized either programmatically or using an external XML file. Other features include line numbering and find/replace dialog.
  3. CBCGPVisualManager has the following new methods: OnFillHeaderCtrlBackground, OnDrawSplitterBorder, OnDrawSplitterBox, OnFillSplitterBackground, OnFillAutoHideButtonBackground and OnDrawAutoHideButtonBorder. By overriding these methods developer can customize header, splitter control and auto-hide button appearance.
  4. CBCGPVisualManager::EnableToolbarButtonFill allows to enable/disable filling of background of toolbar buttons for the whole scheme.
  5. Toolbar's "Customize" button manages all toolbars from current row.
  6. Added support for full screen mode. There are the following new methods in CBCGPFrameWnd and CBCGPMDIFrameWnd classes: EnableFullScreenMode, ShowFullScreen, IsFullScreen and EnableFullScreenMainMenu.
  7. Added built-in support for ID_EDIT_REPLACE command in CBCGPEditView.
  8. Added palette mode for popup menus ( see screenshot ). To enable this mode, developer have to call CBCGPToolbarMenuButton::SetMenuPaletteMode. This feature is illustrated by Wordpad example.
  9. CBCGPPropList is working now with date/time values: a new class CBCGPDateTimeProp (derived from CBCGPProp) was added.
  10. Added support for in-place spin control in the property list: there is a new method of CBCGPProp: EnableSpinControl.
  11. Added support for VT_UI2 and VT_UI4 types in CBCGPPropList.
  12. Added support for the following keystrokes in CBCGPPropList: F4 - start editing item, Ctrl+Left / Ctrl+Right - move splitter left/right.
  13. Added a new virtual method 'OnEditToolbarMenuImage' to CBCGPToolbarCustomize class. By overriding this method, developers can provide their custom image editor for editing of toolbar/menu images.
  14. A new class CBCGPSplitterWnd allows to customize splitter's appearance.
  15. Added new support for alpha-blending toolbar images. Take a look at the new example "MMStyleExample" ( see screenshot )
  16. CBCGPWorkspace class has a new method "GetRegistryBase".
  17. CBCGPBarContainerManager class has a new method "GetDefaultSlider".
  18. Added a new static member of CBCGPTabbedControlBar class: CBCGPTabWnd::Style m_StyleTabWnd. This member allows to define appearance of a tab control embedded into a tabbed control bar.
  19. CBCGPToolbarSpinEditBoxButton class has a new access method: GetSpinControl.
  20. CBCGPDateTimeCtrl class has the following new methods: SetAutoResize, GetAutoResize, SetTextColor, GetTextColor and AdjustControl.
  21. Popup menus accept now Tab and Shift-Tab characters for navigation between items.
  22. CBCGPToolbarButton has a new virtual method: OnGlobalFontsChanged. This function is called when the system font has been changed.
  23. CBCGPTaskPane has a new method: AddSeparator.
  24. CBCGPOutlookWnd has a new method: SetPageButtonTextAlign.
  25. Added support for Visual Studio.NET MDI tabs activation mode: CBCGPBaseTabWnd::EnableActivateLastActive method was added.
  26. CBCGPToolBar has a new virtual method: OnGetCustomToolTipText
  27. CBCGPToolBar::EnableCustomizeButton has a new optional parameter: bQuickCustomize = TRUE. Setting this parameter to FALSE disables quick customization of toolbar buttons.
  28. CBCGPContextMenuManager has a new method: GetMenuById
  29. CBCGPColorProp has a new method: SetColumnsNumber.


  1. Fixed incorrect minutes assignment in CBCGPDurationCtrl::SetDuration.
  2. Fixed incorrect behavior of docking control bars during stretch.
  3. Fixed bug in CBCGPMaskEdit::CheckChar.
  4. CBCGPColorMenuButton: fixed problem with a color box size in the large icons mode.
  5. CBCGPColorMenuButton: fixed problem with a color box appearance in the vertical docking mode.
  6. CBCGToolbarComboBoxButton's font is restored correctly when the system font has changed.
  7. Control bar context menu doesn't appear when a control bar is being tracked.
  8. Fixed problem with appearance of CBCGPFileDialog's file name in "Windows 2000" mode.
  9. Information for diabled toolbar buttons is displayed properly on status bar.
  10. Improved appearance of selected item in customization dialog.
  11. CBCGPButton is working correctly with high- and true color bitmaps.
  12. Fixed a problem when tooltip for a CBCGPButton didn't appear after first click.
  13. Fixed a problem with dismissing of popup-menu upon clicking in the property sheet tabs area.
  14. CBCGPPropertySheet's page navigation control correctly treats page activation now: a tab is not activated when page activation is declined.
  15. User can't drag a control bar out of screen.
  16. Buttons of CBCGPCalendarBar are repositioned correctly when a calendar control is resized.

Version 6.51. Released 07/28/2003

New features:

  1. CBCGPPropertyList class has two New features: group name is displayed now taking the full control width and the window content is being shown when user drags the column splitter. The following methods have been added to provide backward compatibility with previous versions: IsGroupNameFullWidth, SetGroupNameFullWidth, IsShowDragContext and SetShowDragContext.
  2. CBCGPPropertySheet has a new style: PropSheetLook_OneNoteTabs. Using this style, developer can replace the standard tab control by the new, cool control with colored tabs and icons. Take a look at the new sample program PropSheetDemo to see this feature in action.
  3. CBCGPButton can be drawn using current Windows XP theme when CBCGPVisualManager2003 is activated (in the version 6.5, only CBCGPWinXPVisualManager allowed this feature).


  1. Fixed crash in CBCGPDrawManager::RGBtoHSV: in some Windows color schemes conversion from RGB to HSV caused divide by zero.
  2. CBCGPOutlookWnd hides scroll buttons during animation: it makes the animation more smooth.
  3. Fixed problems with UNICODE compilation in Visual Studio.NET 2002/2003. Now wchar_t is treated as a built-in type.
  4. The task pane is redrawn correctly when it stretched to very small size.
  5. Fixed bug with animation for the bottom-aligned task groups.

Version 6.5. Released 07/21/2003

New features:

  1. A new class CBCGPVisualMananger2003 implements Microsoft Office 2003 look. (see the picture ).
  2. Added Office-style toolbar quick customization menu (see the picture ). Also, CBCGPMiniFrameWnd has a quick customization button on the caption when toolbar's quick customization mode is available for a toolbar embedded into the frame .
  3. CBCGPFrameWnd, CBCGPMDIFrameWnd and CBCGPOleIPFrameWnd classes have a new virtual method: OnShowCustomizePane. You can modify the appearance of quick customization menu by overriding this method.
  4. CBCGPTabWnd has a new style: STYLE_3D_ONENOTE. Using this style, you can create Microsoft OneNote-style colored tabs with rounded edges: see the picture .
  5. CBCGPMDIFrameWnd::EnableMDITabs has a new optional parameter: CBCGPTabWnd::Style style. You can set this parameter either to CBCGPTabWnd::STYLE_3D_SCROLLED (default) or CBCGPTabWnd::STYLE_3D_ONENOTE.
  6. Full integration with Visual Studio.NET 2003: added support for Integration Wizard, Build Wizard, Application Wizard and on-line help.
  7. A new class CBCGPHotSpotImageCtrl allows creation of images with hot-spot areas. See BCGDotNetExample's start page.
  8. Added support for tabs auto-colors. After calling CBCGPTabWnd::EnableAutoColor all tabs will be displayed with a built-in colors. The color set can be modified by CBCGPTabWnd::SetAutoColors.
  9. CBCGPListCtrl class has an ability to change a font for individual cells. A new virtual method "OnGetCellFont" has been added. Please take a look at BCGPControls example.
  10. GLOBAL_DATA class has a new member: m_nMaxToolTipWidth. Using this method developers can display multi-line tool tips.
  11. Added a new method 'IsStateExists' to CBCGPWorkspace class. Call this method to check validity of a specific state.
  12. CBCGPToolbarDropSource and CBCGPToolbarDropTarget are exported now.
  13. CBCGPToolbarCustomize constructor has a new flag: BCGCUSTOMIZE_MENUAMPERS. Use it to leave "&" symbols on the item labels.
  14. Added a default constructor to the CBCGPPropertySheet class.
  15. CBCGPToolbarComboBoxButton has new methods: GetEditCtrl - allows creation of a custom edit control, SetContextMenuID/GetContextMenuID - allows changing the context menu for default edit control.
  16. CBCGPToolBar has a new notification message: BCGM_RESETRPROMPT
  17. CBCGPBaseTabWnd::SetTabIconOnly allows displaying tabs without text label, with icons only.
  18. CBCGPVisualManager has new methods: OnDrawTabContent, GetTabFrameColors, OnEraseTabsFrame, OnDrawMenuArrowOnCustomizeList, OnDrawScrollButtons and OnDrawShowAllMenuItems.
  19. Added animation to expanding/collapsing task pane groups. CBCGPTaskPane has new methods: EnableAnimation and IsAnimationEnabled
  20. Scroll buttons were added to CBCGPTaskPane. Use a new method "EnableScrollButtons" to enable/disable them.
  21. Added Microsoft Office 2003-style to the task pane: EnableNavigationToolbar/IsNavigationToolbarEnabled methods were added. Take a look at the WordPad example to see this feature in action.


  1. Fixed some visual bugs with the drop-down menu shadow.
  2. CBCGPEditCtrl vertical scroll bar is updated correctly in WM_SETTEXT message.
  3. CBCGPStatusBar doesn't show resize bar when the parent frame is maximized.
  4. CBCGPEditView can be created without document. In the previous versions, edit view assumed existence of the document every time.
  5. CBCGPPropertySheet page area is calculated correctly now in non-tabbed (e.g. tree) modes.
  6. Fixed several problems with OLE in-place activation.
  7. All system colors such as COLOR-3DFACE are rendered now from the GLOBAL_DATA only.
  8. Outlook bar's scroll buttons are drawn using current (active) Visual Manager.
  9. Fixed memory leak in CBCGPToolBar::RemoveButton. The leak occurred if the last button was separator.
  10. CBCGPDockingControlBar tool tips are correctly loaded now from the language-specific DLLs.
  11. CBCGPPropertyPage doesn't pass focus to the first control when application is reactivated.

Version 6.4. Released 04/28/2003

New features:

  1. The library is certified now for Visual Studio.NET 2003 (integration with the new environment will be available in the next version).
  2. Added support for VS.NET-style property dialogs with left-aligned navigation tree. CBCGPPropertySheet has 2 new methods enabling this feature:
    • AddTreeCategory
    • AddPageToTree

    See BCGCBDotNetExample "Tools | Options" dialog.

  3. CBCGTaskPane control can be floating.
  4. Added support for multiple pages in CBCGPTaskPane control. See Wordpad example for details.
  5. CBCGPTaskPane contains several new methods for page/group/task/page manipulation.
  6. Added "symbol" support to CBCGPEditCtrl. Now you can define a set of characters to be automatically replaced with images. See a new example ChatEditor.
  7. Added a new set of date-time controls:
    • CBCGPCalendarBar (calendar control)
    • CBCGPDateTimeCtrl (date-time picker)
    • CBCGPDurationCtrl (duration control) See BCGPControls example for more info.
  8. Implemented alpha blending support for toolbar images. Using this feature, you can create high-quality toolbar images adapted to the system colors. You can enable or disable this feature by setting CBCGPToolbarImages::m_bDisableTrueColorAlpha to TRUE or FALSE. The default value is FALSE for backward compatibility. Take a look at BCGPIEDemo example to see this feature in action.
  9. CBCGPDrawManager class has a new method: GrayRect.
  10. Added right-alignment support for popup menus.
  11. Masked edit control supports ES_UPPERCASE and ES_LOWERCASE styles. Now it converts lowercase letters into uppercase and vice versa, as the standard edit control does.
  12. A new class CBCGPToolbarSpinEditBoxButton allows creation of toolbar edit box buttons with the spin button control.
  13. CBCGPPropList's expanding boxes are drawn using new CBCGPVisualManager's method 'OnDrawExpandingBox'.
  14. Added a new "auto hide all" feature. Now if you have several docked control bars in a container and press the pin button while holding Ctrl key, all control bars residing in this container will be switched to auto hide mode.
  15. CBCGPProp has several new methods:
    • virtual CWnd* CreateInPlaceEdit (CRect rectEdit, BOOL& bDefaultFormat);
    • virtual void OnRClickName (CPoint point)
    • virtual void OnRClickValue (CPoint point, BOOL bSelChanged)
    • SetName and GetName
  16. CBCGPVisualManager class has a new virtual method: OnDrawSlider. Using it, developer can customize control bar slider appearance.
  17. CBCGPButton::SetImage has a new optional parameter - button's disabled image.
  18. CBCGPToolbarButton has a new virtual method: OnBeforeDrop
  19. CBCGPToolBar has a new virtual method: OnBeforeRemoveButton. By overriding this method, developer can disable removing a specific buttons from toolbar in the customization process.
  20. CBCGPToolBar::NotifyControlCommand allows to change a toolbar control notification processing.
  21. CBCGPEditCtrl has a new variable m_nDlgCode. You can manipulate this variable if you put the edit control on a dialog.
  22. CBCGPMiniFrameWnd has a new boolean static member m_bUseSaveBits. If you set this member to TRUE, the miniframe class will be registered with CS_SAVEBITS style.


  1. The mouse click on popup menu item with sub-items is managed correctly now. In the previous versions, it caused a new popup menu to be closed immediately after appearing.
  2. All instances of CBCGPPopupMenu::m_wndMenuBar were replaced by CBCGPPopupMenu::GetMenuBar (). This solves problems with implementation of the user menu popup bar inside standard CBCGPPopupMenu.
  3. Removed unnecessary assertion in CBCGPToolbarComboBoxButton::NotifyCommand: in some cases, the regular toolbar button can be created with the same ID as combo box.
  4. CBCGPToolbarComboBoxButton::SelectItem always updates the content of edit control.
  5. The correct DLL (BCGCBProDLL) is created when _BCGCBPRO_IN_OTHER_DLL directive is defined.
  6. The floating toolbar caption is repainted correctly now when user modifies toolbar name in customization mode.
  7. CBCGPKeyboardManager::SaveAccelaratorState correctly saves an empty acceleration table.
  8. Disabled appearance of non-editable toolbar buttons on the customization commands list.
  9. Toolbar image loaded from external resource DLL is re-loaded correctly when the Windows system colors are changed.
  10. Fixed a resource leak in the code resetting menus.
  11. CBCGPSkinManager correctly treats a product name: this allows to avoid problems with skin DLLs of the same version, but for different products.
  12. Fixed problem with CBCGPTabWnd's scroll buttons status: the buttons are disabled now when no scroll is available.
  13. Toolbar's "Customize" button is aligned correctly now.
  14. Fixed problem with CBCGPDropDownToolbarButton's toolbar appearance on the multi-monitor systems.
  15. Toolbar is correctly resized after removing button in the customization mode.
  16. Toolbars list on the customization dialog is correctly shows toolbar's visibility state when toolbar is floating. In the previous versions, when user had hided the floating toolbar, the check box was still checked.
  17. CBCGPWinXPVisualManager draws correctly the MDI child window's "Restore" button.
  18. Selected popup menu item is correctly repainted in the multi-column menu mode when CBCGPVisualManagerXP is activated.
  19. CBCGPVisualManagerXP doesn't make toolbar background color too light in very "light" (luminescence of the system 3d color is greater than 230) Windows color schemes.
  20. CBCGPPropList's description area height is not being changed now when control is resized.
  21. Solved some redraw problems when MDI tabs are enabled and an MDI window has been destroyed.
  22. CBCGPEditCtrl correctly handles UNICODE text for copy/cut/paste operations.
  23. CBCGPEditCtrl does not destroy caret in the destructor - it solves some focus problems.
  24. Mouse pointer is correctly positioned on a toolbar, when the toolbar has been floated.
  25. Toolbar size is adjusted immediately when toolbar buttons have been deleted during customization.
  26. Default minimal size of a control bar is set to 1 pixel.
  27. The size of non-floating dialog bars is not reduced when its parent window is stretched.
  28. Docking manager correctly handles rebars.
  29. Solved some problems with animation in outlook bar.

Version 6.21 (HotFix). Released 01/09/2003

New features:

  1. Active view can be prevented from losing focus during loading state. Usually the focus is taken by tabbed bars when a new tab is inserted and activated. You can set CBCGPTabWnd::m_bEnableActivate to FALSE to keep the input focus (the default value is TRUE).
  2. The return value of BCGM_CHANGING_ACTIVE_TAB is not discarded. Ifa handler returns TRUE the tab won't be activated. It may be helpful if you have MDITabs enabled and you want "silently" open new documents.


  1. Control bars correctly rout messages from embedded controls (for example, if the uses hits "enter" in the edit control inside toolbar combo box button, the appropriate message will be delivered to the main frame).
  2. Partially fixed unnecessary resizing of nested docked control bars when one of the bars is shown/hidden.
  3. Show/hide of tabbed control bars doesn't break the docking layout.
  4. Fixed "ghost" application. In some cases a picture of main frame window remained on the screen after the application has been closed.
  5. Menu bar is correctly resized in the case when the option "Show window contents while dragging" is turned off.
  6. Floating toolbars do not remain visible when the main frame is minimized and activated.
  7. Miniframe windows and docking control bars correctly remember "pin state" (roll up frames).
  8. The edit control correctly copies text to the Clipboard.
  9. The control correctly saves filesreplacing "\n" (the internal representation of EOL) with"\r\n".
  10. Fixed some GPF's in the edit control.
  11. Fixed incorrect syntax highlighting for the last word in the edit control (if you clear the edit control and just type "int" in C++ file, this keyword wasn't colored).

Version 6.2. Released 12/26/2002

New features:

  1. The CBCGPEditCtrl class implements the functionality of advanced edit control with the following special features:
    • IntelliSense support
    • Syntax highlighting support
    • Markers support
    • Adjustableleft-side area suitable for displaying visual markers and other information
    • Extended (customizable) undo/redo support
    • Block selection support (not implemented in v 6.2)
    • Tooltip support
    • Drag&drop support
  2. New class CBCGPTasksPane implements the functionality of a list of clickable items (tasks) similar to MS Office's Task Pane and Explorer Bar. With each item (task) may be associated a command ID and this command will be executed (WM_COMMAND message is sent to the owner of task pane control) when the user clicks the task. It's possible to assign an icon to each item (task) and use static tasks (labels). Take a look at the Wordpad example to see the new features in action.
  3. CBCGPShellList::EnumObjects and CBCGPShellList::DoDefault methods are virtual now. This allows to customize the shell list appearance.
  4. CBCGPToolbarCustomize has a new flag: BCGCUSTOMIZE_NOTOOLS - provides an easy way to get rid of "Tools" customization page.
  5. There is a new method in CBCGPToolbarComboboxButton class: DeleteItem
  6. CBCGPBaseTabWnd has 3 new notification messages: BCGM_ON_RENAME_TAB, BCGM_ON_MOVE_TAB and BCGM_CHANGING_ACTIVE_TAB.
  7. There are new methods in CBCGPBaseTabWnd class: GetLastVisibleTab, SwapTabs, MoveTab and AutoDestroyWindow/IsAutoDestroyWindow.
  8. CBCGPOutlookBar has a new virtual method 'OnScroll'.
  9. CBCGPToolBox has the ability to scroll a page automatically.
  10. Added support for CBCGButton's check/radio modes: use CBCGButton::SetCheckedImage, CBCGButton::SetCheck and CBCGButton::GetCheck to operate with the button's state. Thanks to Max Khiszinsky for this feature.
  11. New class CBCGPPropertySheet extends the functionality of MFC's CPropertySheet. It displays property pages in two different ways: as a regular property sheet (with tabs located on the top) or as outlook bar control where each outlook button corresponds to a property page. BCGPControls example illustrates the behavior of this class.
  12. New class CBCGPPropertyPage class extends MFC's CPropertyPage class and enables correct processing of the library-supplied popup menus.
  13. New class CBCGPMaskEdit extends the functionality of the Windows edit control. The masked edit control is able to validate typed characters against the specified mask and display them according to specified template. BCGControls example demonstrates how to use this control.
  14. CBCGPPopupMenu:: EnableMenuLogo has a new additional parameter 'nLogoLocation', which allows drawing of menu logos at each side: left, right, top or bottom.
  15. CBCGPColorBar margins are configurable now: use Set/Get VertMargin and Set/Get HorzMargin to change the color bar appearance.
  16. There is a new helper method in CBCGPColorBar class: CreateControl. Using this method you may create a color bar as a dialog control (see BCGControls example).
  17. CBCGPWinXPVisualMananger has a new attribute: SetOfficeStyleMenus/IsOfficeStyleMenus. Set this attribute to TRUE if you wish to enable Office XP-looking menus in the Windows XP scheme.
  18. CBCGPropList class has the following additions:
    • CBCGPProp is integrated now with a new masked edit control (there are new optional parameters in CBCGPProp constructor)
    • A new virtual method 'CBCGPProp::OnClickName' allows processing of mouse clicks on property names.
    • A new registered message BCGM_PROPERTY_CHANGED is sent to the owner of property list control when the value of selected property has changed. In addition, a new virtual function 'OnPropertyChanged' has been added.
    • New methods GetListRect, GetPropertyColumnWidth, GetHeaderHeight, GetRowHeight and GetLeftColumnWidth allow easy access to list attributes.
    • FindItemByData has a new optional parameter 'bSearchSubItems', that allows searching data through the list of subitems.
    • Built-in header control can be replaced by user-defined: a new virtual GetHeaderCtrl () is available now.
    • BCGControls example demonstrates how to use property list on dialog bars/property pages.
  19. CBCGPListCtrl's built-in header control can be replaced by user-defined: a new virtual GetHeaderCtrl () is available now.
  20. CBCGPBaseTabbedBar has a new virtual method OnActivateTab.
  21. CBCGPDockingControlBar allows access to m_nTimeOutBeforeAutoHide and m_nSlideSteps static members. Changing the default values you can control animation speed for autohide bars.
  22. CBCGPAutoHideToolBar allows access to g_nShowAHWndDelay static member, which controls the delay between the moment when the mouse cursor is placed over an autohide button and the moment when an autohide window begins to slide out.
  23. CBCGPControlBar has two new methods: SetExclusiveRowMode and GetExclusiveRowMode. When this mode is turned off for a menu bar (by default it's on), it will behave as a regular toolbar and doesn't take the full row.


  1. CBCGPDropDownToolbarButton correctly draws user-defined images.
  2. Menu image border is repainted correctly for owner-draw menu images.
  3. CBCGPToolbarFontSizeCombo::RebuildFontSizes correctly fills data list now.
  4. Some transparent controls are repainted correctly on the Windows XP gradient background.
  5. Sub-menu now is not closed when the user double-clicks on the parent menu item.
  6. Fixed problem with highlighted color item disappearing when CBCGPWinXpVisusalManager is active.
  7. Fixed problem with a menu resource leak in CBCGPMenuPage: now an old menu handle is destroyed after menu reset operation.
  8. CBCGPToolbarMenuButtonsButton is painted now using Visual Manager methods.
  9. Fixed incorrect behavior of multi-level popup menus causing assertions in specific cases.
  10. CBCGPStatusBar doesn't reset its font to default after the system settings were changed.
  11. CBCGPShellList::DisplayFolder doesn't sort items in non-report mode.
  12. Disabled MDI child animation when maximized window is being active.
  13. CBCGPToolbarComboBoxButton::SelectItem doesn't cause combobox flickering now when edit text is still unchanged.
  14. CBCGPBaseToolBar::GetMinSize correctly returns default values for horizontal and vertical control bars.
  15. Toolbars are not activated when the user clicks a button or caption.
  16. CBCGPBaseTabbedBar containing non-detachable tabs is correctly destroyed when docked to the main frame.
  17. Fixed toolbar flickering when switching to and from customize mode.
  18. Fixed flickering in MDI applications when switching between MDI child windows in maximize mode.
  19. Pre-dock state tabbed control bars is shown correctly (no empty tabs).
  20. SetWindowPos is always called with SWP_NOACTIVATE flag.
  21. CBCGPGlobalUtils::SetNewParent correctly handles reparenting for floating/docking.
  22. Toolbars are resized correctly if the system option "Show window contents while dragging" is turned off.
  23. CBCGPMenuBar::GetSystemMenu returns NULL without unnecessary assert when there is no system menu.
  24. The state is correctly loaded if MDI child windows are maximized.
  25. The size and position of floating menu bar is correctly set on the application startup.
  26. When a toolbar button shows the text label and has been dragged from one toolbar to another in customize mode, it will correctly show the text label.
  27. Docking control bar doesn't display the pin button when it was created without CBRS_BCGP_AUTOHIDE style.
  28. When a docking control bar is tabbed, it can be torn off only using its tab.
  29. The library-based applications will correctly work as OLE containers. You'll need to recompile the library with _BCGP_USE_OLEIMPL_ symbol definition and include MFC\SRC to the list of include directories.
  30. Toolbar combo box button containing dropdown combo box displays the selected item in disabled state.

Version 6.1 (HotFix). Released 08/23/2002

New features:

  1. Added support for tabbed toolbars. See CBCGPTabbedToolbar class.
  2. Added property list control. See CBCGPPropList, CBCGPProp, CBCGPColorProp, CBCGPFileProp, CBCGPFontProp classes. BCGCBDotNetExample illustrates how to use this control
  3. Added Visual Studio-style toolbox control. See CBCGPToolBox and CBCGPToolBoxPage classes. BCGCBDotNetExample illustrates how to use this control.
  4. Method CBCGPBaseControlBar::DoesAllowDynInsertBefore returns FALSE for any non-floating control bar. Now, if you want to make a menu bar non-floating (statically docked) you shouldn't derive a class from CBCGPMenuBar just to override this method and return FALSE (in the previous version the base implementation always returned TRUE).
  5. CBCGPBaseControlBar has a new method GetDockRow that allows easy access to a row where a toolbar is docked. It may be useful if you want to arrange toolbars on a particular row using CBCGPDockBarRow::ArrangeControlBars (int nMargin, int nSpacing).
  6. CBCGPBaseControlBar has a new method GetParentTabWnd.
  7. Implemented a new method UnDockControlBar that properly removes a control bar from a dock bar or docking manager. You can use this method when you want to exclude a particular control bar from the docking layout (and/or redock it later at different place).
  8. CBCGPToolBar::InsertButton is a virtual function now.
  9. CBCGPTabWnd implements OnDragOver and OnDragEnter methods.
  10. CBCGPTabWnd calls BCGM_ON_MOVE_TAB when the user has dragged a tab to another position.
  11. CBCGPDockManager has a new method GetControlBarList returning a list of control bars that belong to a docking manager as well as the list of all floating control bars.
  12. CBCGPDockingControlBar has a new member BOOL m_bDisableAnimation. You can use it to enable or disable animation when docking controls bars are switched to/from auto hide mode.
  13. CBCGPDialogBar::Create has additional optional parameters DWORD dwTabbedStyle and DWORD dwBCGStyle.
  14. Added processing of the standard keyboard accelerators such as Ctrl+V, Ctrl+C, Ctl+X, Ctrl+Z, Del to CBCGPToolbarEditCtrl.
  15. MDIBars example illustrates how to use non-floating resizable and non-resizable dialog bars on MDI child frame window.
  16. CBCGStatusBarPaneInfo is exported from the library and defined in BCGPStatusBar.h.
  17. CBCGPStatusBar has a new method GetPaneProgress;


  1. Solved some redraw problems on toolbar and rebar controls.
  2. Rollup window is not activated when the user is moving the mouse over the window and the rollup window is placed behind another floating window.
  3. Rollup window doesn't grow every time the application is restarted.
  4. Empty miniframe window does not appear.
  5. AppWizard for VS.NET generates bcgprores.h instead of bcgbarres.h for static link.
  6. CBCGPReBar properly initializes Windows common controls.
  7. Keyboard accelerators are disabled in the Print Preview mode.
  8. CBCGPPrintPreviewView class is exported.
  9. CBCGPToolbarComboBoxButton properly receives focus by shortcut in the flat mode.
  10. It's possible to completely disable SaveState for control bars. In the previous version docking state was saved always causing crash.
  11. AppWizards generates applications with "BCGP AppWizard-Generated Applications" entry.
  12. Non-floating control bars can't be floated accidentally by double click.
  13. It's possible to select "Visualizations" in AppWizard for Visual Studio 6.0.
  14. Corrected problem with tool tip control and combo-box control in auto hide mode.
  15. Pressing Alt+F4 when a floating miniframe has focus correctly closes a miniframe window.
  16. Context help is working properly now.
  17. All floating miniframe windows don't get activated when one of them has lost the input focus.
  18. Dynamically destroyed control bars that were contained in a tab window are properly removed from the tab window.
  19. If a group of control bars is initially set to the auto hide mode, the application docking state is restored properly.
  20. When a user presses 'Ctrl+Page Down' in a tab control that has some hidden tabs, the tab control doesn't try to activate the hidden tabs.
  21. ON_UPDATE_COMMAND_UI is properly called for toolbars placed on a floating docking control bar.
  22. Application doesn't assert when using popup menu in a floating miniframe window.
  23. Non-detachable control bars forming tabbed window doesn't crash the application on load if they were set in the auto hide mode in the previous session.
  24. Unicode skins/applications properly display skin name and author name.
  25. Calls on CBCGPTooBar::AddButton/RemoveButton properly adjust layout of a toolbar.
  26. CBCGPBaseControlBar properly redirects the following messages to the owner: WM_NOTIFY, WM_COMMAND, WM_DRAWITEM, WM_MEASUREITEM, WM_DELETEITEM, WM_COMPAREITEM, WM_VKEYTOITEM, WM_CHARTOITEM.
  27. Docking state for floating tabbed control bars is properly restored.
  28. CBCGPBaseTabbedBar properly passes "active" and "detachable" attributes when one tabbed window is attached to another tabbed window.
  29. BCGSoundThreadProc is marked as _cdecl. It allows compilation of the library with different from _cdecl calling conventions.
  30. BCGPTabWnd::SetActiveTab (int iTab) sends the BCGM_CHANGE_ACTIVE_TAB message to its parent window.
  31. CBCGPBaseTabWnd::OnLButtonDblClk properly calls StartRenameTab if in-place editing is enabled.
  32. CBCGPControlBar::OnDestroy () properly removes a control being destroyed from tabbed window.
  33. Window class of CBCGPStatusBar is registered with CS_DBLCLKS style.
  34. CBCGPDialogBar::OnUpdateCmdUI calls the base class only. This ensures proper update of dialog bar controls.
  35. CBCGPDialogBar is not floated when the user clicks or double clicks outside of dialog bar controls.
  36. CBCGPMDIChildWnd allows docking of non-floating control bars only. See MDIBars example for details.
  37. CBCGPToolbarComboBoxButton handles CBN_SETFOCUS notification by passing it to embedded edit control.
  38. CBCGPToolbarComboBoxButton::OnDrawOnCustomizeList is drawn using the active visual manager.
  39. CBCGPOutlookBar::LoadState and SaveState are marked as virtual.
  40. CBCGPOutlookWnd::OnEraseBkgnd returns TRUE if the number of tabs is greater than zero; otherwise it calls the base class.
  41. CBCGHeaderCtrl's image has correct vertical alignment (centered).