BCGSoft > BCGControlBar Pro for MFC

BCGControlBar Pro for MFC versions

Version 30.3. Released 12/16/2019
  1. Visual theme easy chooser. Adding and maintaining the visual themes has never been so easy: instead of specifying a lot of menu items associated with visual themes, simply create one menu item that will be automatically replaced with themes list and call SetApplicationLookMenu in your application's class constructor. A second parameter of this method specifies which themes can be used by application (see screenshot). This method can be called for both menu- and Ribbon-based applications.

    For the dialog-based application you can use CBCGPThemeSelectorComboBox (see screenshot): this is CBCGPComboBox-derived control with list of themes. When user chooses a theme from this combo, this visual theme will be automatically activated. Please take a look at BCGPControls and WordPad examples to see this control in action.

  2. Themed File Dialog. A new class CBCGPFileDialogEx implements Windows-like File Dialog (see screenshot). In general, API of this class is very similar to CFileDialog, but all customization methods (like adding custom controls) are not implemented "out of the box" and should be developed in derived classes (we demonstrate this approach in new sample ThemedFileDialog and updated SVGViewDemo sample).

    To use this new dialog in the standard ID_FILE_OPEN or ID_FILE_SAVE command handlers, simply set m_bThemedFileDialog to TRUE in your application class constructor (you can see this in BCGPMSOfficeDemo, BCGPVisualStudioGUIDemo and other examples and samples).

    Important: since we cannot guarantee that behavior of this dialog is absolutely the same as you can see in the standard Windows File Dialog, we strongly recommend to add some option to your program that allows to specify which File Dialog (standard or themed) will be used (we've added this option to all our Designer applications).

  3. Ribbon Bar
    1. CBCGPRibbonSeparator: added new, optional parameter 'bVisible' to the class constructor. In addition, CBCGPRibbonPanel::AddSeparator method has a new, optional parameter bVisible. Non-visible separator intends for the control layout customization: for example, you may group controls by columns, but there is no vertical line between the specified columns.
    2. CBCGPRecentFilesListBox displays themed file dialog if CBCGPWinApp::m_bThemedFileDialog is TRUE (see screenshot).
    3. Class CBCGPRibbonSpinButtonCtrl is exportable now: you may override CBCGPRibbonEdit:: CreateSpinButton and create your custom up/down (spin button) control.
    4. CBCGPRibbonStatusBar: added simplified icons support (see screenshot). Call new method CBCGPRibbonStatusBar::SetIconsStyle to specify whether icons located on the Ribbon status bar should be simplified. A new virtual method CBCGPVisualManager::IsSimplifiedRibbonStatusIcon specifies whether a Ribbon status bar icon should be simplified or not in the currently activated visual theme by default. BCGPMSOfficeDemo example illustrates this new feature.
    5. CBCGPRibbonStatusBarPane: implemented pane animation based on SVG icons list. A new method SetAnimationList with 2-nd parameter szFrame (icon size) was added to this class.
    6. CBCGPRibbonToolsPage displays themed file dialog if CBCGPWinApp::m_bThemedFileDialog is TRUE (see screenshot).
    7. CBCGPRibbonUndoButton: added optional, custom labels - ("Cancel", "Undo one action" and "Undo multiple actions" format) - to the class constructor.
    8. CBCGPRibbonEdit: added support for multi-line edit controls (ES_MULTILINE style). Please take a look at RibbonGadgets sample to see how to implement multi-line Ribbon Edit in CBCGPRibbonEdit-derived class (see screenshot).

  4. Toolbars and Menus
    1. CBCGPToolBarImages::AddImage and CBCGPToolBarImages::UpdateImage methods have 2 optional parameters now: bFitImage - fit image to the current size and bPremultiplyAlpha.
    2. CBCGPToolBarImages: added new methods Attach and Detach.
    3. CBCGPStatusBar::SetPaneTextColor: added a new optional parameter 'clrTextDisabled'.
    4. CBCGPOutlookWnd::SetToolbarImageList: has a new, optional parameter bAutoScale.

  5. Dialogs and Forms
    1. CBCGPSplitterWnd: implemented a new dialog mode. By default, CSplitterWnd (base class of CBCGPSplitterWnd) is forwarding all child control notifications to the parent frame and this behavior is not so comfortable for developer when splitter is created on the dialog. Call new method CBCGPSplitterWnd::SetDialogMode and all notifications and commands will be sent to the parent dialog.
    2. CBCGPProgressDlgParams: the following new members were added to this control:
      • m_bProgressSmoothAnimation - the progress bar is smoothly moving in the progress dialog.
      • m_bProgressSetPosLighting- progress bar lighting effect.
      • m_bNoProgressBorder - no frame around the progress control (suitable for Visual Manager VS 2012 and higher only).

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

  6. Tasks Pane and Toolbox
    1. CBCGPTasksPane: implemented Office 2013-2019-like navigation tabs (see screenshot). Call new method EnableNavigationTabs to enable/disable navigation tabs. Please take a look at TasksPane sample to see this new feature in action.
    2. CBCGPTasksPane: improved groups and tasks vertical scrolling.

  7. Diagram Control
    1. CBCGPDiagramShape: a new static member m_bShadowsEnabled allows to disable shadows for all objects of CBCGPDiagramShape-derived classes. By default, this member is TRUE.
    2. CBCGPDiagramShape: added a new virtual method IsShadowEnabled. Override this method to disable shadows for your CBCGPDiagramShape-class or for the specified shape object. The default implementation uses CBCGPDiagramShape::m_bShadowsEnabled, which is TRUE by default.

  8. Grid and Report Controls
    1. CBCGPGridCtrl: custom text/image margin support (see screenshot). Override new virtual method(s) GetTextMargin, GetTextVMargin and GetImageMargin to specify custom cell margins.
    2. CBCGPGridItem::Select method is virtual now.
    3. CBCGPGridCtrl: SetColorTheme and SetVisualManagerColorTheme methods are virtual now.

  9. Property Grid Control
    1. CBCGPFileProp constructor has a new, optional parameter bThemedFileDlg. Specifies whether the file dialog (appears on button click) is themed.
    2. CBCGPPropList: if control is not themed, in-place tooltip will be drawn using default Windows colors.

  10. Controls
    1. CBCGPBreadcrumb: new method RefreshDynamicItem updates content of the dynamic breadcrumb node.
    2. CBCGPBreadcrumb::SelectSubPath: this new method allows navigating to the current (selected) node-relative path.
    3. CBCGPBreadcrumb: added new virtual method PrepareInplaceEditRes. This method is called when user presses Enter key at in-place edit mode. Override this method to change edit box text value.
    4. CBCGPEdit::EnableFileBrowseButton: added a new, optional parameter bThemedFileDlg. Specifies whether the file dialog (appears on button click) is themed.
    5. CBCGPProgressCtrl: the following new attributes were added to this control:
      • m_bSetPosSmoothAnimation - the progress bar is smoothly moving upon SetPos calling.
      • m_bSetPosLighting - lighting effect after SetPos calling.
      • m_bDrawFrame - drawing frame around the control (suitable for Visual Manager VS 2012 and higher only).

      Please take a look at SkinnedDialog sample to see this feature in action.
    6. CBCGPTreeCtrl: new method EnableThemedInplaceTooltip enables/disables themed in-place tooltips.
    7. CBCGPListCtrl: new method EnableThemedInplaceTooltip enables/disables themed in-place tooltips.
    8. CBCGPListCtrl: implemented custom (owner-draw) icons support. Override a new virtual method IsCustomIcon to tell whether a list control item has the custom icon and OnDrawCustomIcon to perform the icon drawing.
    9. CBCGPTreeCtrlEx: added TVS_SHOWSELALWAYS style support.

  11. Shell Management
    1. CBCGPShellTree: new method IsNotSynchronizedWithList tells whether the shell tree control is synchronized with related shell list control.
    2. CBCGPShellTree::RefreshFolder method is public now.
    3. CBCGPShellTree::SelectPath has a new optional parameter bExpandNodes. When this parameter is FALSE and node is not currently expanded, the framework selects a 1-st visible (expanded) parent node.
    4. CBCGPShellTree::SetRelatedList has a new optional parameter bDontSyncOnSelectByKeyboard. When this parameter is TRUE and tree node was selected by the keyboard, the related shell list is not synchronized with the tree until user presses Return button.
    5. CBCGPShellTree: a new virtual method IsExcludeFolder allows to filter-out tree nodes in the derived class.
    6. CBCGPShellList: added thumbnails support ("Large Icons" mode only, see screenshot). Call new method EnableThumbnails to enable/disable thumbnails and AreThumbnails to check if thumbnails are enabled. Please note, that thumbnails are loaded in the separate thread, so you'll not see them immediately after enabling this feature or changing a current folder.
    7. CBCGPShellList: new method SetAlwaysSortItems allows to sort list items in all modes (by default, the list is sorted in LVS_REPORT mode only).
    8. BCGCBITEMINFO has a new member dwAttributes: contains SFGAO_ flags of the shell item.
    9. CBCGPShellManager: added a new implementation of BrowseForFolder method. This method receives a pointer to BROWSEINFO structure and has the same behavior as SHBrowseForFolder Shell API method.
    10. CBCGPShellManager has the following new helper methods now:
      • IsRecycleBin - tells whether a specified folder is Recycle Bin.
      • IsCompressedFolder - tells whether a specified folder is an archive.
      • IsLibrariesFolder - tells whether a specified folder is Libraries.
      • GetItemThumbnail - returns thumbnail of the specified item.
      • GetItemAttributes - gets specified item's SFGAO_ flags.
      • PathFromShortcut - translates shortcut file to the path.
      • GetWinExplorerOption - obtains Windows Explorer option.

    11. CBCGPShellBreadcrumb: a new virtual method IsExcludeFolder allows to filter-out tree nodes in the derived class.
    12. CBCGPShellBreadcrumb::SelectPath with an empty path navigates now to the root (Desktop) folder.

  12. Miscellaneous
    1. Added new shapes to BCGPChartMarkerOptions::MarkerShape: MS_TRIANGLE_LEFT, MS_TRIANGLE_DOWN, MS_TRIANGLE_RIGHT, MS_PENTAGON, MS_HEXAGON and MS_STAR (see screenshot).
    2. CBCGPGlobalUtils::EnableEditCtrlAutoComplete: a new, optional parameter lpszCurrentDirectory specifies files/folders autocomplete scope.
    3. Ribbon Designer: added invisible separators support.
    4. CBCGPSVGImage: new global flag 'm_bTraceProblemsDefault' allows to prevent tracing SVG issue. By default, all SVG issues are reported to the Debug Output window.
    5. There are two new optional parameters in CBCGPSVGImage::DoDraw method: bKeepAspectRatio and bUseViewBoxSize.
    6. CBCGPTabWnd: a new method HideDisabledScrollButtons allows to hide disabled horizontal scroll buttons.
    7. A new themed file dialog was added to all our Designers and Editors.

  13. Examples and Samples
    1. BCGPChartExample: added new marker shapes demonstration and themed file dialog in Export to image.
    2. BCGPControls: added CBCGPThemeSelectorComboBox demonstration, themed file dialog in the edit box and property grid controls.
    3. BCGPDiagramDemo: themed File Dialog demonstration.
    4. BCGPDigitalDashboard: themed File Dialog demonstration.
    5. BCGPExplorer: demonstrates Shell API new features.
    6. BCGPGridExample: demonstrates cell extended padding.
    7. BCGPMSOfficeDemo: demonstrates status bar simplified icons and themed File Dialogs.
    8. BCGPOrganizer: demonstrates improved CBCGPRibbonUndoButton control.
    9. BCGPVisualStudioGUIDemo: demonstrates themed File Dialogs.
    10. Wordpad: demonstrates themed File Dialogs.
    11. BreadcrumbDemo: demonstrates breadcrumb with custom-size icons.
    12. DiagramEditor: demonstrates themed File Dialogs.
    13. ProgressDialogDemo: added new progress dialog features demonstration.
    14. SkinnedDialog: added progress control smooth animation and lighting effect demonstrations.
    15. SVGViewDemo: added custom file dialog with SVG file preview (see screenshot).
    16. TasksPane: added Tabs navigation demonstration.
    17. ThemedFileDialog: new sample which demonstrates how to use a themed file dialog (see screenshot).
    18. WordPad: added CBCGPThemeSelectorComboBox demonstration.
    19. RibbonGadgets: added multi-line Ribbon Edit demonstration.

  14. Fixes
    1. CBCGPBreadcrumb: when user cancels in-place editing by Escape key, the focus is moved to the parent window now.
    2. CBCGPBreadcrumb: addressed issue with drop-down menu icons size. Now, the menu item icons are the same as breadcrumb icons (see screenshot).
    3. CBCGPExplorerToolBar: addressed issue with toolbar created on non-frame (e.g. dialog) window.
    4. CBCGPGanttChart: addressed issue with incorrect vertical scrolling in case of huge number of Gantt chart rows.
    5. CBCGPGridCtrl: addressed issue with incorrect (non-contrast) foreground color of internal header icons in some visual themes.
    6. CBCGPRibbonCategory: addressed issue with horizontal scrolling when category has a large number of groups.
    7. Ribbon QAT Customization dialog: controls that cannot be added to QAT (overridden method CanBeAddedToQAT returns FALSE) don't appear on the left-side controls list anymore.
    8. CBCGPRibbonLabel: addressed issue with foreground color when control is located on the Ribbon status bar (in some visual themes).
    9. CBCGPSVGImageList::LoadFromSVGSpriteBuffer: addressed issue with incorrect SVG icons sorting in some cases.
    10. CBCGPPopupMenu: addressed issue with vertical scroll page size.
    11. CBCGPRibbonUndoButton: addressed issue with controls state synchronization.
    12. CBCGPOutlookBarToolBar: addressed issue with scaling toolbar button images in the high DPI mode.
    13. CBCGPTreeCtrlEx: addressed issue with removing selection when user clicks on the empty (outside items) space.
    14. CBCGPListCtrl: addressed issue with header control subclassing on style changing.
    15. CBCGPShellTree: addressed issue with unnecessary node expanding when user presses numeric '+' key twice.
    16. CBCGPRibbonBackstagePagePrint: addressed issue with some printers that return incorrect options.
    17. CBCGPChartAxisPolarY: fixed axis drawing bug when axis has a minimal size or less.
    18. CBCGPScrollBar: addressed issue with incorrect thumb position when an owner list control has LVS_AUTOARRANGE style.
    19. CBCGPRibbonCustomize: the dialog is themed now if globalData.m_bUseVisualManagerInBuiltInDialogs is TRUE.
    20. CBCGPComboBox: addressed issue with erasing of the empty dropped-down list box when control has CBS_SIMPLE style.
    21. CBCGPEditCtrl: addressed some issues with underlined font (used for the edit hyperlinks) incorrect initialization.
    22. CBCGPGridCtrl: addressed issue with filter bar redrawing after visual theme changing.
    23. Toolbar and menu customization: disabled option to add icon to toolbar button/menu item with ID = -1.
    24. CBCGPRibbonEdit: addressed issue with incorrect foreground color when the Ribbon bar has a custom font.

Version 30.2. Released 10/1/2019
  1. Office 2019-style Visual Themes are available now (see screenshot). A new class CBCGPVisualManager2019 implements the following visual styles: Colorful, Dark Gray, White and Black. These new styles were added to BCGP_VISUAL_THEME enumeration:
    • BCGP_VISUAL_THEME_OFFICE_2019_COLORFUL
    • BCGP_VISUAL_THEME_OFFICE_2019_DARK_GRAY
    • BCGP_VISUAL_THEME_OFFICE_2019_WHITE
    • BCGP_VISUAL_THEME_OFFICE_2019_BLACK
    Please take a look at BCGPMSOfficeDemo, BCGPOrganizer, DrawCLI and Wordpad examples to see this new visual theme.
  2. Chart Control
    1. Implemented tooltip support for the chart objects: new SetTooltip, GetTooltip and GetDescription methods were added to CBCGPChartObject class.
    2. Improved Chart tooltips support: using a new method CBCGPChartVisualObject::SetHitTooltipFlags you may specify now which chart parts should have tooltips. By default, tooltips are displayed for the Chart axis, data points, axis scale breaks and data table cells.

  3. Shell Management
    1. Implemented shell notification support: when shell control content is changed outside the application, the control is being notified about this and control will be automatically updated. A new method RegisterShellNotification was added to CBCGPShellBreadcrumb, CBCGPShellList and CBCGPShellTree classes. Please take a look at BCGPControls example to see this new feature in action.
    2. Implemented themed "Browse for Folder" dialog (see screenshot). The following methods have a new, optional parameter bThemedBrowseFolderDlg:
      • CBCGPShellManager::BrowseForFolder
      • CBCGPEdit::EnableFolderBrowseButton
      • CBCGPFileProp constructor

  4. Miscellaneous
    1. CBCGPComboBox: method CalcRowHeight is virtual now.
    2. CBCGPDrawManager: new helper AreContrastColors tells whether 2 specified colors are enough contrast.
    3. CBCGPMenuBar: implemented right-aligned menu bar items (see screenshot). The following new methods were added to this class:
      • AddItemToRight: add an item to the menu bar right side
      • RemoveAllItemsOnRight: remove all right-aligned menu bar items
      Please take a look at MenuLogo sample to see this feature in action.
    4. CBCGPRibbonCheckBox: implemented right-aligned text label - SetRightAlignText and IsRightAlignText methods were added to this class.
    5. CBCGPDiagramVisualContainer: new method 'RemoveSelected' deletes selected diagram's objects and connectors.
    6. CBCGPPlannerViewSchedule: implemented ability to show/hide the duration bar in schedule view. EnableDurationBar and IsDurationBarEnabled methods were added to this class.
    7. CBCGPWnd: improved MSAA support for Visual C++ 6.0

  5. Examples and Samples
    1. BCGPChartExample: added object tooltips demonstration.
    2. BCGPControls: demonstrates a themed "Browse for folder" dialog and Shell notification.
    3. BCGPExplorer: demonstrates Shell notification.
    4. BCGPMSOfficeDemo, DrawCLI, Wordpad and RibbonGadgets: illustrate Office 2019 (Office 365)-style Ribbon bar.
    5. MenuLogo: demonstrates right-aligned menu bar items.

  6. Fixes
    1. CBCGPCalendar and CBCGPDateTimeCtrl: addressed issue with incorrect treating December 30, 1899 as empty date.
    2. CBCGPScrollDialog: addressed issue with slow scrolling on mouse wheel event.
    3. CBCGPRibbonCaptionMDITabs: addressed issue with invisible highlighted tab Close button when a custom Windows 10 accent color is red.
    4. CBCGPRibbonCheckBox: addressed issue with incorrect foreground color when the control was placed on the status bar (in some visual themes).
    5. CBCGPEditCtrl: addressed issue with incorrect caret position during the text block dragging.
    6. CBCGPWinApp: addressed issue with a multiple times visual theme selection in the application's constructor.
    7. CBCGPScrollBarImpl: addressed issue with incorrect thumb size for Windows 8 and later.
    8. CBCGPSVGImage: addressed issue with incorrect order of 'use' elements.
    9. CBCGPVisualContainer: addressed issue with different graphics managers in several calls of ExportToBitmap method.
    10. CBCGPCircularProgressIndicatorImpl: addressed issue with animation in marque mode when parent (owner) window is being destroyed.
    11. CBCGPTreeCtrlEx: addressed some node toggling issues in Expand method.

Version 30.1. Released 7/16/2019
  1. Dialogs and Forms
    1. New class CBCGPFindReplaceDialogThemed implements a themed find/replace dialog (see screenshot). The methods of this new class are very similar to CFindReplaceDialog methods, so you can easily replace the standard dialog with a new one. This dialog is used now by CBCGPEditView and CBCGPGridView classes. If for some reason you need to keep the old code, simply uncomment #define BCGP_USE_STD_FINDDLG in BCGCBProConfig.h and rebuild the library. Please take a look at BCGPGridExample and BCGPVisualStudioGUIDemo examples to see this new feature in action.
    2. CBCGPPropertySheet::EnablePageHeader has a new, optional parameter bExtendHeaderToAeroBackButton (default is FALSE). When this parameter is TRUE, the property sheet header will cover aero "Back" button (see screenshot).

  2. Chart Control
    1. Implemented bar/column shapes: the series can be either Box (default), Full Pyramid or Partial Pyramid (see screenshot). SetBarShape/GetBarShape methods were added to CBCGPChartBarSeries class.
    2. Implemented 3D chart rotation by the mouse cursor/gesture event (see screenshot) - EnableRotationByMouse and IsRotationByMouseEnabled methods were added to CBCGPChartDiagram3D class. Please take a look at BCGPChartExample to see this new feature in action.

  3. Visual Manager and Themes
    1. Improved appearance of the switch control: new image resources (both .SVG and .PNG) were added.
    2. Grid control: improved group box appearance in the Windows Native theme (see screenshot).
    3. CBCGPVisualManager2016: improved appearance of disabled edit box (Office 2016 colorful/dark themes).

  4. Grid and Report Controls
    1. CBCGPGridCtrl: added themed Find dialog support (see screenshot). Call a new method SetFindDialogThemed to specify whether the dialog is themed and IsFindDialogThemed to check if this dialog has a theme support.
    2. CBCGPGridView: added OnEditFind command handler. To enable finding in your grid view, just add ON_COMMAND(ID_EDIT_FIND, CBCGPGridView:: OnEditFind) in the message map of your CBCGPGridView-derived class.

  5. Controls
    1. CBCGPGroup: improved group with check box appearance customization; the following new virtual methods were added to this class: GetGroupNameSize, OnDrawGroupCheckBox and OnDrawGroupName.
    2. CBCGPListBox: implemented changing a pinned state by keyboard. "Right" key highlights a pin in the currently selected item and "Space" key toggles a highlighted pin state.
    3. Implemented switch control transition effect (see screenshot): when user toggles the switch state, a thumb will be smoothly moved to a new position.

  6. Edit control
    1. Improved bookmarks/markers support. CBCGPEditCtrl has the following new methods: - GoToFirstMarker: moves caret to the 1-st editor's marker - BookmarkLine: adds bookmark to the specific editor's line - MarkAll: adds bookmarks to all editor's lines that contain a specified text.
    2. CBCGPEditView: added new methods SetFindDialogThemed and IsFindDialogThemed.
    3. Improved exporting text to HTML.

  7. Miscellaneous
    1. CBCGPRibbonCheckBox: implemented modes - CheckBox or Switch (see screenshot). New methods SetMode and GetMode were added to CBCGPRibbonCheckBox class.
    2. CBCGPGraphicsManager: added new methods DrawPieEx, DrawDoughnutEx, Draw3DPieEx, DrawPyramidEx, Draw3DPyramidEx and Draw3DFunnelEx. These methods allow to draw shapes with extended outline attributes such as stroke style and line width.
    3. Added Visual Studio 2019 support to Ribbon Designer and Toolbar Editor.
    4. Ribbon Designer supports a Switch control now.
    5. CBCGPSVGImageList::SaveToFile has a new, optional parameter bAddEmptyOnError. When this parameter is TRUE, a blank SVG image will be added to the list in case of incorrect SVG source image.

  8. Examples and Samples
    1. BCGPChartExample: added column/bar shapes and 3D chart rotation by the mouse demonstrations.
    2. BCGPGridExample: added themed Find dialog demonstration.
    3. CBCGPMSOfficeDemoView: demonstrates how to add a custom Find/Replace dialog to CRichEditView-derived class (see screenshot).
    4. BCGPVisualStudioGUIDemo: illustrates a custom Find/Replace dialog (see screenshot).
    5. PropSheetDemo: demonstrates a page header that covers Aero Wizard "Back" button.
    6. RibbonGadgets: demonstrates Ribbon switch control (see screenshot).

  9. Fixes
    1. CBCGPBaseTabWnd::SetImageList: loaded image list is automatically scaled now according to the current DPI value.
    2. CBCGPEditCtrl: addressed issues with a text search.
    3. CBCGPPopupMenu: addressed issue with a vertical scrolling of the last menu item.
    4. CBCGPRibbonBar: addressed issue with preventing DPI scaling of Ribbon element's icon drawn on the menu's item.
    5. CBCGPRibbonStatusBarPane: addressed issue with DoDrawText virtual method parameters list.
    6. Addressed issue with incorrect color pickers layout in the color dialog in some Windows locales.
    7. Schedule view: addressed issue with drawing appointment duration.
    8. Chart: addressed issue with calculation of the value from/to pixels of the chart axis when labels are displayed between the tick marks.
    9. Radial menu: addressed issue with incorrect drawing/hit-testing when a number of menu items is 1.
    10. Addressed issue with closing an MDI document with active print preview in the Ribbon backstage mode.

Version 30.0. Released 5/29/2019
  1. Visual Studio 2019 support:
    • The source files are fully compliant with Visual 2019 C++ compiler.
    • All our examples and samples were thoroughly tested with VS 2019.
    • Evaluation version contains DLLs and libraries required for VS 2019.

  2. Frame windows with a themed non-client area are created with WS_CAPTION style now: this change addresses many issues such as incorrect multi-monitor support, incomplete side-by-side behavior, frame resizing performance and others. If for some reason you need to keep an old behavior, simply set globalData.m_bIsFrameWsCaptionStyle to FALSE or override IsWsCaptionStyle method in your CMainFrame class. In addition, you may create a dialog box/property sheet with WS_CAPTION style: set globalData. m_bIsDlgWsCaptionStyle to TRUE or override IsWsCaptionStyle method in your dialog/property sheet class and return TRUE.

  3. Dialogs and Forms
    1. A new class CBCGPScrollDialog implements a dialog box with scrolling support (see screenshot). Please take a look at new sample ScrollDialogDemo to see this feature in action.
    2. CBCGPFormView: added automatic scrolling when a newly focused control exceeds form's bounds.
    3. CBCGPPropertySheet: added custom (owner-draw) notification badges support (see screenshot). Override new virtual method 'OnDrawPageNotificationBadge' to draw your custom badge (see PropSheetDemo sample).

  4. Docking Panes
    1. CBCGPDockingControlBar: implemented ability to specify pane's caption depending on the current state (see screenshot). For example, you can add a name of the currently selected object on the properties grid caption. Override a new method GetCaption in your CBCGPDockingControlBar-derived class. PropertyGridMDIDemo demonstrates this new feature.
    2. New global flag CBCGPOutlookButton::m_bDrawAmpersand specifies whether button's label should be drawn with underlined character or ampersand before this character. By default, the label is drawn with underlined character.
    3. CBCGPStatusBar: implemented status bar pane notification badge support (see screenshot). To specify a pane's badge, you have to call BCGPCMD_MGR.SetNumericNotificationBadge or BCGPCMD_MGR.SetCustomNotificationBadge method with id = status bar pane's ID. StatusBarDemo demonstrates this new feature.

  5. Chart Control
    1. Implemented drawing of partially visible data points for a fixed interval width. New methods EnableAllUnitsOnFixedInterval and IsAllUnitsOnFixedInterval were added to CBCGPChartAxis class.
    2. A new method ValueFromPoint was added to CBCGPChartTernaryAxis class.
    3. CBCGPChartSurfaceSeries::ColorMode enumerator has a new member: CM_SERIES: when this mode is specified, each series is drawn in one color, which is defined by the currently selected theme or by user.

  6. Visual Manager and Themes
    1. A control's description (usually located below control's label) has a special color now (see screenshot). A new method 'GetDescriptionTextColor' was added to CBCGPVisualManager class.
    2. CBCGPVisualManagerVS2019: changed visual theme colors to match VS 2019 release (Light blue theme) (see screenshot).

  7. Grid and Report Controls
    1. CBCGPGridItem: added hot-tracking support (see screenshot). Override a new 'IsHotTrackEnabled' method in your CBCGPGridItem-derived class and return TRUE to enable grid cell mouse tracking. Next, you've to override new virtual methods 'OnMouseMove' and 'OnMouseLeave' to implement a mouse cursor processing inside this grid cell. BCGPGridExample ("Cell Types" view, "Rating" cell) demonstrates this new feature.
    2. CBCGPGridCheckItem: added grid control modes ("Check box" or "Switch") (see screenshot). New methods SetMode and GetMode were added to this class. BCGPGridExample ("Cell Types" view) demonstrates this new feature.
    3. Implemented a special row marker for the Grid cell editing mode (see screenshot): when row is selected and one of the cells is being edited, a special marker (pencil) is displayed on the left side. New method CBCGPGridCtrl::SetRowHeaderEditImage allows to specify this symbol. In addition, you may draw your own marker by overriding new method CBCGPGridCtrl::OnDrawRowHeaderEditImage.

  8. Desktop Alert Window
    1. CBCGPPopupWindow: improved colors of BCGPPopupWindowTheme_Black theme (see screenshot).
    2. CBCGPPopupWindow: if window transition effect is CBCGPPopupMenu::SLIDE and desktop alert should appear on the left or right screen side, the sliding will be horizontal.

  9. Controls
    1. CBCGPDateTimeCtrl: added WM_GETTEXT message processing. A result of this message is formatted date and time value of this control.
    2. A new class CBCGPIPAddressCtrl implements themed IP Address control (see screenshot). You may see it in our BCGPControls example ("Miscellaneous" page).
    3. CBCGPListBox: new method MoveItem allows to change an existing list box item position (index).
    4. New class CBCGPDragListBox implements a list box that allows users to move items within the control (see screenshot). Generally, this control is very similar to MFC CDragListBox, but it has visual themes support and other CBCGPListBox features such as pinned items support, color bars and others. Please take a look at ListBoxDemo sample to see this new control in action.
    5. CBCGPSliderCtrl: introduced a new "progress" mode (see screenshot). In this mode, the channel area left of the slider's thumb is filled with some (default or user-defined) color. Call a new method CBCGPSliderCtrl::EnableProgressMode to enable or disable this mode. CBCGPSliderCtrl::IsProgressMode tells whether the progress mode is specified. Please take a look at ResizableForm sample ("Page 4" page) to see this new feature in action.
    6. CBCGPGroup: implemented group caption check box / radio button (see screenshot). When user "unchecks" the group, all controls located within the group bounds will be automatically disabled. SetCheckRadioStyle, GetCheckRadioStyle, SetCheck and GetCheck methods were added to CBCGPGroup class. New sample application "GroupBoxDemo" demonstrates how to use this new feature.

  10. Miscellaneous
    1. Implemented ability to enable "Press and Hold" gesture event for all library controls: by default, this event is disabled for the performance reasons, but you can enable it now by setting globalData. m_bTabletDisablePressAndHold to FALSE.
    2. CBCGPCalendar::IsDateMarked method is virtual now: override it if you wish to mark specific calendar's date without calling MarkDates method.
    3. New virtual method CBCGPCalendar::OnClickTodayButton is called when user clicks "Today" button on the calendar.
    4. CBCGPEditCtrl: added visual theme-dependable bookmarks (see screenshot). If for some reason you wish to keep old (gradient-style) bookmarks, please call a new CBCGPEditCtrl's method EnableVisualManagerMarkers with bEnable = FALSE.
    5. CBCGPPropList: implemented items button custom color (see screenshot). New methods SetItemButtonColor and GetItemButtonColor were added.
    6. CBCGPWinApp class overrides DoMessageBox method and displays a themed message box (BCGPMessageBox) instead of the standard message box (see screenshot). If you wish to keep the standard message box, please set m_bThemedMessageBox = FALSE in your application class constructor.
    7. CBCGPAppOptions structure has a new member m_bMDITabsDocumentMenu: specifies whether MDI tabs have a documents button located right of tabs.
    8. Added a new registered message BCGM_GETCOLORTOOLTIP. The message is sent to the main application frame when a color box's tooltip is being formatted.

  11. Examples and Samples
    1. BCGPControls: added IP Address control and Property Grid button custom color demonstrations.
    2. BCGPVisualStudioGUIDemo: demonstrates new features of the editor markers.
    3. BCGPGridExample: added demonstration how to add switch control and custom rating control to the grid.
    4. ListBoxDemo: demonstrates a new CBCGPDragListBox class.
    5. PropertyGridMDIDemo: added demonstration how to customize a docking pane caption.
    6. PropSheetDemo: demonstrates owner-draw notification badges.
    7. ResizableForm: added slider controls in a progress mode demonstration.
    8. New sample application ScrollDialogDemo (see screenshot) demonstrates how to use a new class CBCGPScrollDialog.
    9. StatusBarDemo: demonstrates status bar pane notification badge.
    10. New sample application GroupBoxDemo (see screenshot) demonstrates how to add check box and radio button to the group box control.

  12. Fixes
    1. CBCGPGraphicsManagerD2D: addressed issue with incorrectly created stroke style in some cases.
    2. CBCGPKeyMapDlg: addressed issue with incorrectly filled key list if main application frame has an advanced frame caption pane.
    3. CBCGPListBox: addressed issue with incorrectly painted list box item when control has "Right Align" style.
    4. CBCGPPopupMenu: addressed issue with a first menu item repainting after the scrolling performed by the mouse wheel.
    5. CBCGPPropertySheet: addressed issue with repainting of the separator located below the wizard buttons after property sheet was resized (Wizard mode only).
    6. CBCGPRibbonBar: addressed issue with QAT icons color when Ribbon bar doesn't replace the frame caption (in some visual themes such as Office 2016 colorful or dark gray).
    7. CBCGPRibbonCategory::GetImageSize returns now a default image size when a Ribbon category (tab) doesn't have a corresponding image list.
    8. CBCGPRibbonComboBox: addressed issue with foreground color of control located on the Ribbon tabs row (in some visual themes when tabs area has a dark background).
    9. CBCGPStatic: addressed issue with calling SetPicture multiple times. In this case, a previously loaded image is properly cleared.
    10. CBCGPSwitchCtrl correctly processes BCGM_ONSETCONTROLVMMODE registered message now.
    11. CBCGPVisualManager: addressed switch control drawing issue in some visual themes.
    12. Chart: addressed issue with incorrect surface series rendering in case of CBCGPChartSurfaceSeries::CM_SINGLE color mode when a number of color levels is 1.
    13. CBCGPPlannerViewSchedule: addressed issue with incorrect size for all-day appointments that have duration of more than one day.
    14. CBCGPPropertyPage: addressed issue with incorrect header width in some cases.
    15. CBCGPScrollBar: addressed issue with internal control rendering in some cases.
    16. CBCGPTooltipManager: optimized tooltips memory management.
    17. Visual container and control: fixed incorrect position and layout of the visual container items after printing or exporting.
    18. CBCGPGridCtrl: addressed some issues with a grid horizontal scrolling.

Version 29.2. Released 2/19/2019
New features
  1. Visual Studio 2019 Preview support (retail product version only):
    • The product Integration Wizard fully supports Visual Studio 2019.
    • The source files are fully compliant with Visual 2019 C++ compiler.
    • All our examples and samples were thoroughly tested with VS 2019.

  2. Implemented Visual Studio 2019-style visual manager (see screenshot). Added a new class CBCGPVisualManagerVS2019 (derived from CBCGPVisualManagerVS2013) and BCGP_VISUAL_THEME enumerator has 3 new members:
    • BCGP_VISUAL_THEME_VS_2019_BLUE: VS 2019-style blue color theme.
    • BCGP_VISUAL_THEME_VS_2019_LIGHT: VS 2019-style light color theme (very similar to VS 2017 light).
    • BCGP_VISUAL_THEME_VS_2019_DARK: VS 2019-style dark color theme (very similar to VS 2017 dark).
    Please run BCGPVisualStudioGUIDemo example to see this new theme.

    Disclaimer: this theme is based on Visual Studio 2019 Preview 2 and colors may be changed when the future versions of VS 2019 will be released.

  3. Controls
    1. CBCGPButton: added BS_DEFCOMMANDLINK and BS_COMMANDLINK styles support (see screenshot). Please take a look at BCGPControls example to see this feature in action.
    2. CBCGPCalendar: added keyboard navigation support.
    3. CBCGPDateTimeCtrl and CBCGPDurationCtrl: added flat buttons support (see screenshot). New methods SetFlatButtons and HasFlatButtons were added to these classes. Please take a look at BCGPControls example to see this new look.
    4. CBCGPDateTimeCtrl: implemented dates range support (see screenshot). If developer specifies a pair of two date/time pickers as "related" (by calling a new method CBCGPDateTimeCtrl::SetRelated), a user will be able to select a dates range in the popup months calendars and selected dates are displayed in 2 related controls. BCGPControls example demonstrates this new feature.
    5. CBCGPListBox: added item tooltip when the list box is a property sheet navigation window and there is no enough space to display a whole page name.
    6. CBCGPSpinButtonCtrl: new public member 'm_bIsFlat' specifies whether control has a flat look.

  4. MSAA and CodedUI Tests
    1. CBCGPCircularProgressIndicatorImpl: added EVENT_OBJECT_VALUECHANGE notification upon progress value changing.
    2. Improved automation support in the gauge controls.
    3. CBCGPGridCtrl: added STATE_SYSTEM_INVISIBLE state for the hidden grid items.

  5. Miscellaneous
    1. Improved pane resizing cursors: instead of default MFC, new DPI-aware internal library cursors are used now for the docking pane resizing.
    2. Improved foreground color of highlighted link control.
    3. CBCGPCaptionBar: added new public member m_clrBarHyperlink. This attribute specifies a hyperlink foreground color (see screenshot). By default, the hyperlink's color is the same as rest of the caption bar text. See CaptionBarDemo sample application.
    4. CBCGPPageTransitionManager::SetPageTransitionEffect has a new, optional parameter 'bIsFirstPageTransition' (default value is FALSE). If this parameter is TRUE, the first page will appear with the specified page transition effect. Please take a look at PropSheetDemo sample to see this feature in action.
    5. CBCGPPopupWindow: added new member m_bIsTopMost (default value is TRUE). When this attribute is TRUE, the popup window is created with WS_EX_TOPMOST extended window style. Set it to FALSE in CBCGPPopupWindow-derived class constructor if you don't need to create this window as topmost.
    6. CBCGPGridCtrl: improved grid header appearance in some visual themes.

  6. Examples and Samples
    1. BCGPControls: demonstrates push button with BS_COMMANDLINK style and new date/time picker features.
    2. BCGPVisualStudioGUIDemo: added VS 2019 Blue theme.
    3. CaptionBarDemo: demonstrates how to specify a hyperlink custom text color.
    4. PropSheetDemo: demonstrates 1-st page transition effect.
    5. SplashScreenDemo: splash image was replaced with SVG (allows to use a single image for dark and light themes).
Fixes:
  1. Addressed issue with changing MDI child window name after setting a corresponding MDI tab name.
  2. Dialogs and forms: addressed issue with cleaning-up control info tips when the dialog is being destroyed.
  3. CBCGPEdit: addressed issue with control redrawing after losing focus in some visual themes.
  4. CBCGPListBox: addressed issues with horizontal scrolling when control has LBS_MULTICOLUMN style.
  5. CBCGPWnd: code that disconnects accessibility clients was moved from the class destructor to WM_DESTROY message handler.
  6. CBCGPWorkspace: addressed issue with incorrect pinned files/folders registry path.
  7. CBCGPPropertySheetCtrl: addressed issue with incorrectly used control ID passed to DoCreateOnPlaceHolder method.
  8. CBCGPCaptionBar: addressed issue with changing text of the pane when user clicks the hyperlink.
  9. CBCGPEditCtrl: addressed issue with incorrect vertical scrolling when some text blocks are collapsed.
  10. CBCGPGridCtrl: addressed issue with destroying grid window during automation tests.
 
Version 29.1. Released 12/12/2018
New features
  1. Chart Control
    1. Implemented data binding (see screenshot). You can easily add a chart data from external data source such as ODBC or ADO. The following classes were added:
      • CBCGPChartDataProvider.
      • CBCGPChartODBCDataProvider.
      • CBCGPChartDAODataProvider.
      • CBCGPChartADODataProvider.
      New methods BindDataTable and BindDataSQL were added to CBCGPChartVisualObject class. Please take a look at BCGPChartExample application ("Chart Data Binding" view) to see this feature in action.
    2. Chart color theme can be edited in the Visual Designer now (see screenshot).

  2. Gauge Controls
    1. Added themes support (see screenshot): you may specify new themes in the Visual Designer and switch between themes using new CBCGPVisualContainer methods SelectVisualTheme or SelectVisualThemeByName. Please take a look at BCGPDigitalDashboard and BCGPGaugesDemo examples to see this feature in action.
    2. CBCGPCircularProgressIndicatorImpl: added animation effect for setting a new position. CBCGPCircularProgressIndicatorImpl::SetPos has a new, optional parameter uiAnimationTime. See BCGPDigitalDashboard example ("Call Center" view) to see this feature in action.

  3. Grid and Report Controls
    1. Added a new virtual method CBCGPGridCtrl::DestroyRow - override it to add some custom actions when grid row is destroyed.
    2. Method CBCGPGridCtrl::CleanUp is virtual now.

  4. Graphics Manager
    1. A new static member CBCGPGraphicsManagerD2D::m_bTrailingSpacesInTextSize specifies whether text trailing spaces should be counted in CBCGPGraphicsManagerD2D::GetTextSize method. By defaut this member is FALSE and trailing spaces are ignored.
    2. CBCGPGraphicsManagerD2D: added factory access methods: GetD2D1Factory returns Direct2D factory, GetDWriteFactory returns DirectWrite factory and GetWICImagingFactory returns WICImaging factory.
    3. A new static method CBCGPGraphicsManager::SetDefaultGraphicsManagerType allows to specify a graphics manager type that will be used by default. For example, if for some reason you wish to disable D2D usage, please call CBCGPGraphicsManager::SetDefaultGraphicsManagerType (CBCGPGraphicsManager::BCGP_GRAPHICS_MANAGER_GDI_PLUS) and GDI+ will be used by default.

  5. Miscellaneous
    1. BCGPGLOBAL_DATA: added new public member 'm_bControlsVisualManagerStyle'. Set this member to TRUE if you wish to enable a visual manager style for all library controls.
    2. CBCGPMessageBox: added a new static member 'm_nTextHeightRatio' (default value is 5). You may change this value to make a message box wider or narrower.
    3. CBCGPListBox: implemented default item support. A default item is rendered using bold font. Call new method CBCGPListBox::SetDefaultItem to specify default item and CBCGPListBox::GetDefaultItem to get a current default item index.
    4. A new method CBCGPSVGImage::ReplaceColors: replaces all occurrences of specific color with a new one.
    5. CBCGPRibbonBar: tooltip default dimensions are scaled now according to current DPI.
    6. CBCGPRibbonPanel::RemoveAll method is virtual now.

  6. Examples and Samples
    1. BCGPChartExample: added new view "Chart Data Binding".
    2. BCGPDigitalDashboard: added theme selection (light and dark) demonstration.

Fixes:
  1. CBCGPMessageBox: addressed issue with message box width in case of a wide caption.
  2. CBCGPPropList: OnPropertyChanged is not called twice now when user changes a Boolean property when switch or check box style is specified.
  3. CBCGPEditCtrl: addressed issue with hiding a caret in the editor control.
  4. Diagram: addressed issues with connectors tracking in the edit mode.
  5. CBCGPToolBoxEx: "Out of Filter" text doesn't appear on the empty toolbox now.
  6. CBCGPToolbarEditBoxButton and CBCGPToolbarComboBoxButton: a default control width is automatically scaled according to current DPI now.
  7. CBCGPCircularProgressIndicatorImpl: addressed issue with reposing sub-gauges when a parent container is being scrolled.

 
Version 29.0. Released 10/29/2018
New features
  1. Implemented Notification Badges support (see screenshot). A notification badge is a small-size element placed near control and indicating some event associated with control. For example, you may add a numeric badge with a number of new mails to Ribbon/toolbar "Mail" button or Security Alert icon to the link control.

    Notification badges were added to the following controls:
    • Toolbar/Ribbon bar/Menu.
    • Ribbon Backstage view.
    • Push Button.
    • Shortcuts ("Outlook") bar.
    • Grid.
    • Tasks pane.
    • Tree control.
    • List box.

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

  2. Introduced Advanced Frame Caption Bar (see screenshot) with the following functionalities:
    • Ability to add custom buttons/controls. Since Frame Caption Bar is derived from the Ribbon Bar, you've to add the ribbon controls only.
    • MDI tabs.
    • Ability to specify an owner-draw system icon with a custom size and custom system menu.

    New methods were added to the frame classes (CBCGPMDIFrameWnd and CBCGPFrameWnd):
    • EnableFrameCaptionBar: enable/disable the caption bar
    • GetFrameCaptionBar: obtain a pointer to the caption bar

    A new option "MDI Tabs on Caption" has been added to the Application Wizards (see screenshot).

    Please take a look at BCGPVisualStudioGUIDemo example and new demonstration programs BCGPEdgeDemo and FrameCaptionDemo to see this new feature in action. In addition, we've added "MDI Tabs on Caption" mode to MDITabsDemo sample.

  3. Ribbon Bar
    1. CBCGPRibbonBackstagePagePrint: added a new virtual method OnGetPrintView. Override this method to specify the view for print preview or printing (by default, the active view is being used).
    2. CBCGPRibbonPaletteButton::SelectItem has new optional parameters: bEnsureVisible - makes a selected item visible and bNotifyOther - synchronizes current selection with other controls with the same ID.
    3. CBCGPRibbonPaletteButton: a new method 'EnsureVisible' has been added to this class.
    4. A new class CBCGPRibbonFrameCaptionBar implements advanced application frame caption bar.
    5. A new class CBCGPRibbonCaptionMDITabs implements MDI Tabs located on advanced application frame caption bar (CBCGPRibbonFrameCaptionBar).

  4. Dialogs and Forms
    1. CBCGPStaticLayout: added support for controls group. New method AddGroupAnchor allows to apply the same layout for all controls located in the specific group.
    2. CBCGPPropertySheet: added numeric notification badges support (see screenshot). New methods were added to CBCGPPropertyPage class:
      • SetNumericNotificationBadge.
      • ClearNumericNotificationBadge.

      Please take a look at PropSheetDemo sample (List on Left) to see this new feature in action.
    3. CBCGPMessageBox has the following new features and improvements (see screenshot):
      • You can create any CWnd-derived custom control in place of the default text box: override GetTextBoxSize method to specify the control size and CreateTextBox method to create the control.
      • Custom images support: override GetIconSize method to specify the image size and OnDrawIcon to draw a custom image.

      Please take a look at MessageBoxDemo sample to see these features in action.
    4. New class CBCGPMessageLightBox implements a message box in lightbox style (see screenshot). Please take a look at LightBoxDemo sample to see this new feature in action.

  5. MDI Windows and Tabs
    1. A new virtual method CBCGPMDIFrameWnd::OnGetMDITabCustomToolTip allows specifying MDI tab custom tooltip.
    2. Improved MDI Tab animation ("busy" indicator) support:
      • New method CBCGPMDIFrameWnd::SetMDITabStateAnimationImages specifies MDI tab state animation frames list.
      • New methods CBCGPMDIChildWnd::StartMDITabStateAnimation and CBCGPMDIChildWnd::StopMDITabStateAnimation allows to start/stop MDI tab state animation.
      • CBCGPMDIChildWnd::IsMDITabStateAnimation tells whether MDI tabs animation was started.
    3. A new virtual method CBCGPMDIFrameWnd:: OnClickMDINewTab is called by the framework when user clicks a "New" button located on the MDI tabs. By default, a new document is created in the currently active MDI frame.
    4. A new document is automatically created now in active tear-off frame (if any). If for some reason you want to disable this feature and always create a new document in the main application frame (as it was in the previous product versions), please set m_bCreateNewFrameInActiveTearOffFrame = FALSE in CBCGPMDIChildWnd-derived class (usually CChildFrame) constructor.

  6. Chart Control
    1. CBCGPChartView::EnableAdvancedLegend has a new, optional parameter 'bPrint'. Set it to TRUE if you wish to print an advanced chart legend object.
    2. CBCGPChartSurfaceSeries has a new method SetHitTestTolerance. If you call this method with dblHitTolerance different from 0 (e.g. 5), the hit testing returns vertices instead of planes.

  7. Gauge Controls
    1. Circular Progress Indicator: added a new style BCGPCircularProgressIndicator_Dots (see screenshot). This style can be specified in the infinite mode only.
    2. CBCGPNumericIndicatorImpl: added numeric format support (see screenshot):
      • BCGP_NUMERIC_INDICATOR_FORMAT_STANDARD - standard format (default).
      • BCGP_NUMERIC_INDICATOR_FORMAT_SCIENTIFIC - scientific format.
      • BCGP_NUMERIC_INDICATOR_FORMAT_HEX - HEX format (32-bits integers only).

      Call new method CBCGPNumericIndicatorImpl::SetFormat to specify the numeric format. BCGPGaugesDemo example Illustrates this new feature.

  8. Visual container and Visual Designer
    1. New method CBCGPGlobalUtils::ScaleByDPI(CBCGPVisualContainer& container) scales all container elements according to current DPI.
    2. CBCGPBaseVisualObject: new virtual method GetHitTestTolerance allows to specify a tolerance of the hit testing.

  9. Visual Manager and Themes
    1. CBCGPTasksPane: improved appearance in Windows Native theme under Windows 8/10 (see screenshot).
    2. VS 2012/2013/2017 and Office 2013/2016 Visual Managers: added support for the light custom and immersive (specified by Windows 10 settings) accent colors (see screenshot). Please take a look at BCGPMSOfficeDemo and BCGPVisualStudioGUIDemo examples to see this feature in action.
    3. Added new virtual methods to CBCGPVisualManager class:
      • GetControlFillColor: returns a default background color of a control.
      • GetControlTextColor: returns a default text color of a control.
      • OnDrawViewBorder: call this method from WM_NCPAINT message handler in your CView-derived class to make the view borders matched to the active theme.
    4. A new static method CBCGPVisualManager::SetNumericNotificationBadgeDefaultColor allows to specify a notification badge default background color.

  10. Grid and Report Controls
    1. Implemented notification badges (see screenshot). Added new methods CBCGPGridItem::SetNotificationBadge, CBCGPGridRow::RemoveAllNotificationBadges, CBCGPGridItem::OnDrawNotificationBadge and CBCGPGridCtrl::GetNotificationBadgePadding. Please take a look at BCGPGridExample application ("Cell Types" view) to see this new feature in action.
    2. Filter bar appearance customization. New optional parameter 'color' has been added to CBCGPGridCtrl::EnableFilterBar method.
    3. CBCGPGridCtrl::GetColumnCount has a new optional parameter bCalcVisibleOnly. Set this parameter to TRUE if you need to calculate the visible columns number.
    4. CBCGPGridCtrl: improved appearance in some Visual Managers.
    5. Added loading grid header/items images directly from the resources: SetHeaderImageList and SetImageList with 'UINT nResID' parameter methods were added to CBCGPGridCtrl class.
    6. New virtual method CBCGPGridCtrl ::OnDrawExpandBox allows to customize an expand/collapse box appearance.

  11. Controls
    1. CBCGPButton: added numeric notification badges support (see screenshot). New methods were added to CBCGPButton class:
      • SetNumericNotificationBadge.
      • ClearNumericNotificationBadge.
      • GetNumericNotificationBadge.
      • GetNumericNotificationBadgeColor.
      • OnDrawNotificationBadge.
    2. CBCGPColorButton: a new method SetDrawColorInDisabledControl allows to display a color box on the disabled control. By default, the color is not displayed when control is not enabled.
    3. CBCGPColorComboBox: added ability to specify the selected item prior to the control creation.
    4. CBCGPHotSpotImageCtrl has the following new features (see screenshot):
      • Added SVG images support: the control image source can be SVG now. In addition, you may specify hot spot areas by SVG element id: a new method AddHotSpot(UINT nID, const CString& strSVGElementID, LPCTSTR lpszToolTip, LPCTSTR lpszToolTipDescription) was added.
      • Implemented keyboard navigation and gesture events support.
      • Added MSAA and Coded UI Tests support.
      Please take a look at HotSpotDemo sample to see these new features in action.
    5. CBCGPListCtrl: implemented drawing of selected item with a visual theme (see screenshot). If for some reason you wish to keep old appearance (default blue background), please call a new method CBCGPListCtrl::EnableThemedSelection with bEnable = FALSE.
    6. CBCGPListBox: added numeric notification badges support (see screenshot). New methods were added to CBCGPListBox class:
      • SetItemNotificationBadge
      • RemoveItemNotificationBadge
      • GetItemNotificationBadgeNumber
      • GetItemNotificationBadgeColor
      Please take a look at ListBoxDemo sample to see this new feature in action.
    7. CBCGPListBox: caption item can be drawn using the same font as other ("non-caption") items. To enable this feature, call a new method SetCaptionItemsLargeFont with parameter bSet = FALSE.
    8. New class CBCGPTabCtrl implements a standard Windows tab control (CTabCtrl) with visual themes support (see screenshot).
    9. CBCGPTreeCtrl: added numeric notification badges support (see screenshot). New methods were added:
      • SetItemNotificationBadge
      • RemoveItemNotificationBadge
      • RemoveAllNotificationBadges
    10. CBCGPTreeCtrl: implemented support for TVS_TRACKSELECT tree control style.
    11. CBCGPShellList: virtual method OnFormatFileSize is obsolete and it should be replaced with OnFormatStrFileSize (a new method has ULONGLONG parameter instead of long).

  12. Graphics Manager
    1. New compilation flag BCGP_EXCLUDE_TEXTURED_BRUSHES allows to reduce CBCGPBrush size. Uncomment this flag in BCGCBProConfig.h if you don't use textured brushes.
    2. CBCGPGraphicsManagerGdiPlus: added a new global flag m_bLoadImageFromStream. By default, GDI+ locks files when loading images from disk storage. To prevent this, you need to set this flag to TRUE and loaded memory streams will be used instead.

  13. Edit control
    1. Implemented error indication support (see screenshot). A new simple and flexible mechanism allows to specify incorrect words or spelling errors and display them with a red curved line under the text and display list of suggested corrections in the word's context menu.
      • EnableErrorIndication: enable/disable error indication. The following new methods were added to CBCGPEditCtrl class:
      • IsErrorIndicationEnabled: tells whether error indication is enabled.
      • IsCorrectWord: override this method to specify if specific word is incorrect. By default, all words are treated as correct.
      • GetWordCorrections: override this method to specify a list of suggested corrections and list of custom actions related to the incorrect word.
      • OnWordCorrectionMenuCustomAction: override this method to perform a custom action for the incorrect word (e.g., add this word to dictionary).
      • GetIncorrectWordToolTip: override this method to specify a custom tooltip displayed near incorrect word (e.g., a reason why this word is treated as incorrect or recommended action).
      Please take a look at BCGPVisualStudioGUIDemo example to see this new feature in action.
    2. Improved side bar appearance under dark and high-contrast visual themes.

  14. Miscellaneous
    1. The library source code is fully-compatible now with Intel Compiler 18.0/19.0. We have fully tested our product with Intel Parallel Studio XE 2018/2019.
    2. D2D initialization: added D2D validation code. If D2D rendering with hardware acceleration is failed, we're trying to use a software rendering. If this type of the rendering is ok, all D2D render targets will be automatically created with D2D1_RENDER_TARGET_TYPE_SOFTWARE type. If the software rendering is failed too, GDI+ graphics manager will be used by default. This addition solves issues with outdated D2D/DirectX drivers on the customer machines.
    3. CBCGPFontSelector has new optional parameters in the class constructor:
      • clrText: specifies a text color.
      • bTransparentBkMode: specifies whether background should be transparent.
    4. CBCGPExplorerToolBar has the following new and improved features (see screenshot):
      • Added optional Refresh (Reload) button with ability to cancel loading process. EnableNavigationButtons has 2 new optional parameters: nRefreshID and nStopID.
      • If a history menu button is not specified, user can right-click on Back/Forward buttons and menu with specific history items will be displayed. A history type (BCGPEXPLORERTOOLBARHISTORY_All, BCGPEXPLORERTOOLBARHISTORY_Prev or BCGPEXPLORERTOOLBARHISTORY_Next) can be obtained by calling a new method GetHistoryMenuType.
      • Improved appearance of the navigation buttons: the icons are loaded now from the new SVG images and nicely scaled in all DPI modes.
      Please take a look at ExplorerBarDemo sample to see these new features in action.
    5. CBCGPScrollView: added support for the gesture pan event. The window can be easily scrolled now on the touch-enabled devices.
    6. CBCGPSVGImage: implemented elements filtering method SetElementsFilter. The filter contains a list of SVG element IDs and allows to perform any image editing actions such as color changing only for the elements in the list.

  15. Examples and Samples
    1. BCGPEdgeDemo: new example that demonstrates how to create MS Edge-style application (see screenshot).
    2. BCGPControls: added numeric badge on the push button demonstration.
    3. BCGPGaugesDemo: added "Dots" circular progress and numeric indicator format demonstrations.
    4. BCGPGridExample: added grid cell numeric badge demonstration.
    5. BCGPMSOfficeDemo: added demonstration how to add light custom accent colors.
    6. BCGPOutlookDemo: added numeric badges located on Shortcuts bar and Folders tree.
    7. BCGPVisualStudioGUIDemo: added custom caption bar and error indication in the edit control (see screenshot).
    8. ExplorerBarDemo: added demonstration of new history modes and refresh/stop button.
    9. HotSpotDemo: demonstrates how to create SVG-based control.
    10. LightBoxDemo: added BCGPLightMesageBox demonstration.
    11. ListBoxDemo: added numeric badges demonstration.
    12. MDIEditorDemo: added error indication demonstration.
    13. MDITabsDemo: added "MDI Tabs on Caption" mode demonstration.
    14. MessageBoxDemo: added custom (window control-based) text box and custom-size icon demonstration.
    15. PropSheetDemo: added page numeric badge.
    16. ResizableForm: demonstrates how to create a controls group layout.
    17. TabControl: demonstrates new CBCGPTabCtrl class.
    18. FrameCaptionDemo (see screenshot): a new sample that demonstrates how to create an advanced frame caption bar with custom controls, system icon and MDI tabs.
    19. NotificationBadgesDemo (see screenshot): a new sample that demonstrates how to add notification badges to different controls.
    20. TreeCtrlDemo: demonstrates tree item highlighting mode and item numeric badges.
Fixes:
  1. Addressed issue with text color on DWM areas in case of custom Windows accent color.
  2. CBCGPBaseTabWnd: addressed issue with moving tabs with a various label length.
  3. CBCGPVisualContainer: addressed issue with scrolling of non-watermark textured background.
  4. CBCGPSliderCtrl: addressed issue with drawing zoom buttons in disabled control.
  5. CBCGPTasksPane: addressed issue with drawing icons on disabled tasks.
  6. CBCGPTasksPane: addressed issue with repainting highlighted task when the mouse cursor leaves the tasks pane.
  7. CBCGPBaseVisualCtrl: addressed issue with drawing control's non-client area using GDI+ graphics manager.
  8. Fixed bug with a window restoring from minimized state using the taskbar icon.
  9. Addressed issue with reposition the maximized frame to another monitor using system keys.
  10. CBCGPGridCtrl: addressed issue with horizontal alignment in CBCGPGridCheckItem with a text label.
  11. CBCGPGridCtrl: addressed issue with horizontal scrolling to a column by EnsureVisible and EnsureVisibleColumn methods for the wide columns.
  12. Diagram: addressed issue with drawing of connection ports in CBCGPDiagramTableShape during a scaling process.
  13. Diagram: fixed bug with a mouse cursor on the diagram's connector.
  14. Diagram: addressed some issues with scaling, drawing, dragging of the diagram connectors.
  15. Diagram: connectors are correctly handling BCGP_EDIT_NOSIZE and BCGP_EDIT_NOMOVE editing flags now.

 
Version 28.0. Released 8/1/2018
New features
  1. Ribbon Bar
    1. Implemented Office 2013/2016-like Ribbon Bar Auto-hide mode (see screenshot). The following new methods were added to CBCGPRibbonBar class:
      • SetAutoHideMode - activates/deactivates auto-hide mode
      • IsAutoHideModeAvailable - tells whether auto-hide mode is active.
      Please note that auto-hide mode is not compatible with a Ribbon DWM ("aero") caption, therefore auto-hide mode will be automatically closed when user activates an "aero" visual theme (e.g. Office 2007 or 2010). Please take a look at BCGPMSOfficeDemo example to see this feature in action.
    2. Added ability to specify whether the Ribbon custom caption button should be displayed: new parameter nFlags was added to CBCGPRibbonCaptionCustomButton constructor. The flag is a combination of the following values: BCGP_RIBBON_CAPTION_CUSTOM_BUTTON_DISPLAY_IN_NORMAL_MODE, BCGP_RIBBON_CAPTION_CUSTOM_BUTTON_DISPLAY_IN_BACKSTAGE_MODE and BCGP_RIBBON_CAPTION_CUSTOM_BUTTON_DISPLAY_IN_HIDDEN_MODE.
    3. CBCGPRibbonBar:: ReplaceRibbonElementByID has a new optional parameter bIncludeHidden. Set it to TRUE if you wish to replace the Ribbon control in the hidden elements too.

  2. Toolbars and Menus
    1. CBCGPColorMenuButton class has a new virtual method "CreateTearOffColorBar". Override this method if you need to create your custom, CBCGPColorBar-derived tear-off color bar.
    2. CBCGPColorBar: added owner-draw color boxes support (see screenshot). A new virtual method "OnDrawPaletteColorBox" was added to CBCGPColorBar, CBCGPColorButton, CBCGPColorMenuButton, CBCGPGridColorItem, CBCGPGridCtrl and CBCGPColorProp. BCGPControls and BCGPGridExample sample applications demonstrate this new feature.
    3. Implemented ability to hide toolbar/menu bar items with an empty items list: HideEmptyMenus and IsHideEmptyMenus methods were added to CBCGPToolBar class.

  3. Dialogs and Forms
    1. Added new registered message BCGM_ONERASECHILDCONTROLBACKGROUND: add this message handler in your dialog/form with a custom background.
    2. BCGPControlInfoTipStyle: added new info tip styles - BCGPINFOTIP_Warning, BCGPINFOTIP_InfoBlue, BCGPINFOTIP_Question and BCGPINFOTIP_Bulb.
    3. CBCGPPropertySheet: improved page redrawing performance upon changing active page and window resizing. A new m_bFlickerLess member was added to CBCGPPropertySheet class. If for some reason you need to keep a previous behavior, set this member to FALSE in the property sheet constructor.

  4. Chart Control
    1. Implemented new color themes: CBCGPChartTheme::CT_SPB (see screenshot), CBCGPChartTheme:: CT_PALACE (see screenshot) and CBCGPChartTheme:: CT_ICE (see screenshot).
    2. Implemented hit-testing and data-point tooltip for the 3D Surface chart.

  5. Gauge Controls
    1. Added a new class CBCGPNumericIndicatorCtrl: implements a Windows control with underlined numeric indicator (CBCGPNumericIndicatorImpl).
    2. Implemented smoothly transitioning numbers (see screenshot) in CBCGPNumericIndicatorImpl: uiAnimationTime and animationType parameters were added to CBCGPNumericIndicatorImpl::SetValue method.
    3. New method "CBCGPNumericIndicatorImpl::SetTextFormatAutoSize" specifies whether a control text size should be changed upon control resizing.

  6. Grid and Report Controls
    1. New virtual method CBCGPGridItem::GetDataColorScale allows to customize a data color scale.
    2. Filter bar keyboard support has been improved: added support for the standard keyboard shortcuts such as Ctrl+X, Ctrl+C, Ctrl+V and Ctrl+A.

  7. Property Grid Control
    1. Added switch-style Boolean property (see screenshot). CBCGPPropList:: BooleanPropertiesStyle enumerator has a new value BOOL_PROPS_SWITCH. A new method CBCGPProp::SetSwitchLabels specifies the switch labels (like "On" / "Off").
    2. CBCGPPropList::SetBooleanPropertiesStyle has a new optional parameter 'nHorzAlign': specifies a horizontal align of the check box/switch. By default, this parameter is TA_LEFT.

  8. Controls
    1. Added standard Windows keyboard accelerators (such as "Ctrl+C") processing to all edit controls.
    2. CBCGPListBox: improved hit testing performance for control with a large number of items.
    3. CBCGPTreeCtrl: added support for themed (visual manager-style) check boxes.
    4. CBCGPListCtrl: added support for themed (visual manager-style) check boxes.

  9. Graphics Manager
    1. Implemented D2D validation in CBCGPGraphicsManagerD2D: CBCGPGraphicsManagerD2D::InitD2D: if D2D is not properly installed on the machine, all future renderings will be performed by CBCGPGraphicsManagerGDIPlus or CBCGPGraphicsManagerGDI.
    2. CBCGPGraphicsManagerD2D::CreateImage and CBCGPGraphicsManagerGdiPlus::CreateImage: implemented loading of external SVG files.

  10. Miscellaneous
    1. BCGCBProConfig.h: added new build flag "BCGP_EXCLUDE_SVG". Uncomment this definition and rebuild the library if you wish to exclude SVG support.
    2. CBCGPContextMenuManager: added a new method "CancelTracking". Call this method if you need to close the menu during CBCGPContextMenuManager::TrackPopupMenu call.
    3. CBCGPKeyHelper: added new public static member 'm_pKeyFormatCallback'. Specify this member if you wish to implement your custom key format.
    4. CBCGPRegistry: added a new static flag 'm_bAutoCloseKey'. Set this flag to TRUE if you wish to close a previous registry key in CBCGPRegistry::CreateKey and CBCGPRegistry::Open methods.

  11. Examples and Samples
    1. BCGPControls: added demonstration of custom color buttons, custom color property and Boolean property switch.
    2. BCGPChartExample: added new chart color themes and interactive 3D surface chart demonstration.
    3. BCGPGaugesDemo: added demonstration of numeric indicator animation.
    4. BCGPGridExample: added custom grid color item.
    5. BCGPMSOfficeDemo: added Ribbon auto-hide mode demonstration.
    6. ResizableForm: demonstrates page transition effect in the resizable property sheet.
    7. RibbonGadgets: added Ribbon auto-hide mode demonstration.
Fixes:
  1. CBCGPAnimCtrl: addresses an issue with control appearance in preview mode.
  2. CBCGPCalendar: addresses an issue with control layout when max. date is specified.
  3. CBCGPLightBoxDialog: addresses an issue with caption button mouse highlighting.
  4. Control info tips: addresses an issue with control appearance in preview mode.
  5. CBCGPToolBarImages::CopyTemp: addresses an issue with copying SVG images.
  6. CBCGPMDIChildWnd: addresses an issue with updating Ribbon bar caption when MDI child is maximized.
  7. CBCGPMessageBox: addresses an issue with message box displayed from the popup menu.
  8. CBCGPScrollBar: addresses an issue with control appearance in RTL mode.
  9. CBCGPScrollBar: addresses an issue with incorrect hit-testing on control edges.
  10. CBCGPPageTransitionManager: addresses an issue with incorrect fade animation.
  11. CBCGPRibbonBar: addresses an issue with incorrect location of dropped-down category window (in the Ribbon bar minimized mode). In the previous product versions, the popup category rectangle was normalized in the current screen.
  12. CBCGPPropertySheet: addresses an issue with page transitions in the resizable property sheet.
  13. CBCGPTabbedControlBar: addresses an issue with restoring tab names. The old docking pane names are not assigned to the tab labels anymore.
  14. CBCGPStatic: addresses an issue with drawing separator in the preview mode.
  15. CBCGPSliderCtrl: addresses an issue with incorrect redrawing of zoom buttons in some cases.
  16. CBCGPPropertySheet: addresses an issue with Windows task bar icon flickering during page transition when the property sheet is a main application window.
  17. CBCGPPropertySheet: a navigation pane (located at the left side) has a correct tab order now.
  18. CBCGPFrameImpl: addresses an issue with incorrect frame shadow when user moves application's frame between monitors with different resolutions.
  19. CBCGPMaskEdit: addresses an issue with wrong Ctrl+navigation key processing when edit control mask is disabled.
 
Version 27.3. Released 5/21/2018
New features
  1. Docking Panes
    1. New global flag CBCGPBaseTabWnd::m_bAlwaysDrawTabIcon specifies whether the tab icon should be drawn even if there is not enough space to display a whole icon.
    2. Added floating pane menu button (see screenshot): EnableFloatingBarsMenuButton and AreFloatingBarsHaveMenuButton methods were added to CBCGPFrameWnd and CBCGPMDIFrameWnd. BCGPVisualStudioGUIDemo demonstrates this new feature.

  2. Chart Control
    1. CBCGPChartLineObject: added line shadow support. New methods SetShadow and GetShadowDepth were added to CBCGPChartLineObject class.
    2. Added 2 new thumbnail flags (passed to CBCGPChartVisualObject::SetThumbnailMode):
      • BCGP_CHART_THUMBNAIL_DRAW_AXIS_NAME: displays an axis name.
      • BCGP_CHART_THUMBNAIL_DRAW_TITLE: displays a chart title.
    3. Implemented ternary axis title location modes: new CBCGPChartTernaryAxis::TitleMode enumeration has the following members:
      • TM_NORMAL: default, title is located at the end of the axis.
      • TM_CENTER: the title is located at the center of the axis.
      The title location is used by the following new methods:
      • CBCGPChartTernaryAxis::SetTitleMode - sets the title mode for the ternary axis.
      • CBCGPChartTernaryAxis::GetTitleMode - returns the current title mode.
      • CBCGPChartVisualObject::SetTernaryAxesTitleMode - sets the title display mode for all ternary axes.
  3. Visual Manager and Themes
    1. CBCGPVisualManager: improved performance when visual manager is being changed - eliminated some unnecessary redrawing code.
    2. CBCGPVisualManager: added new method GetEditSimplifiedIconColors - override it in your custom visual manager if you need to customize edit box simplified button appearance matched to the current visual theme.

  4. Grid and Report Controls
    1. Added highlighting of the matched text for the filter bar (see screenshot): CBCGPGridCtrl ::EnableFilterBar method has new optional parameters: 'clrMarkBackground' - specifies highlighted text background and 'clrMarkText' - specifies highlighted text foreground. BCGPGridExample ("Filter Bar" view) and TreeCtrlDemo demonstrate this new feature.
    2. Added new BCGM_GRID_FILTERBAR_CHANGED event. This event is fired when text in the grid filter bar is being changed.
    3. CBCGPGridCtrl::HasNextSibling method has a new parameter bVisibleOnly that allows to use this method with a filter.
    4. New method CBCGPGridCtrl::OnMeasurePrintPageItems allows to customize content in printing mode.

  5. Controls
    1. Calendar bar: improved month picker appearance (see screenshot).
    2. New method SetEditBoxesVerticalAlignment (implemented in all dialog classes such as CBCGPDialog, or CBCGPFormView) allows to specify a single-line edit box text vertical alignment for all edit box controls located on this dialog.
    3. New method SetEditBoxesSimplifiedBrowseIcon (implemented in all dialog classes such as CBCGPDialog, or CBCGPFormView) allows to specify whether edit box browse icon should be simplified or not. This method modifies icon appearance in all edit box controls located on this dialog.
    4. CBCGPEdit: implemented single-line text vertical alignment (see screenshot). SetVerticalAlignment / GetVerticalAlignment methods were added to this class. Please take a look at EditBoxDemo sample to see this feature in action.
    5. CBCGPEdit: implemented "simplified" mode of the "Browse" button's icon (see screenshot). In the "simplified" mode the "Browse" button has the same background as edit box. Call new CBCGPEdit's method SetSimplifiedBrowseIcon to specify whether the icon is simplified or not. Please take a look at EditBoxDemo sample to see this feature in action.
    6. CBCGPEdit:: EnableFolderBrowseButton: added a new, optional parameter lpszInitialFolder - specifies a folder which initially displayed in the Folder Picker dialog.
    7. CBCGPTreeCtrlEx: implemented standard Tree View notifications (TVN_SELCHANGED, TVN_SELCHANGING, TVN_ITEMEXPANDING and TVN_ITEMEXPANDED). New method CBCGPTreeCtrlEx::EnableTreeCtrlNotifications allows to enable/disable them.
    8. Implemented easy way to create CWnd-derived controls on the static placeholder location: a new method CreateOnPlaceHolder was added to the following classes:
      • CBCGPPropertySheetCtrl
      • CBCGPPropList
      • CBCGPCalculator
      • CBCGPCalendar
      • CBCGPColorBar
      • CBCGPEditCtrl
      • CBCGPGridCtrl
      • CBCGPTabWnd

  6. Miscellaneous
    1. CBCGPPropList::EnableSearchBox has a new, optional parameter 'BOOL bSimplifiedIcon'. Set this parameter to TRUE if you wish to see a simplified icon on the search box.
    2. CBCGPToolbarDateTimeCtrl: added support for themed (CBCGPDateTimeCtrl) date/time picker (see screenshot). New global flag CBCGPToolbarDateTimeCtrl::m_bThemedDateTimeControl specifies whether the date/time picker is themed or not. ToolbarDateTimePicker sample demonstrates this new feature.
    3. CBCGPToolBoxEx::EnableSearchBox has a new, optional parameter 'BOOL bSimplifiedIcon'. Set this parameter to TRUE if you wish to see a simplified icon on the search box.

  7. Examples and Samples
    1. BCGPChartExample: added line object shadows demonstration, axis label mode and title mode in the Ternary view and CBCGPTreeCtrl (located in Workspace view) was replaced with CBCGPTreeCtrlEx with filter bar.
    2. BCGPGaugesDemo: CBCGPTreeCtrl (located in Workspace view) was replaced with CBCGPTreeCtrlEx with filter bar.
    3. BCGPGridExample: added Filter Bar results highlighting demonstration.
    4. BCGPVisualStudioGUIDemo: improved application startup time.
    5. CaptionButtons: added demonstration how to display custom buttons on the tabbed panes and multiple-pane mini-frames.
    6. EditBoxDemo: added edit boxes vertical alignment and simplified icons demonstration.
    7. ToolbarDateTimePicker: added themed date/time picker demonstration.
    8. TreeCtrlDemo: added tree control notifications and filter bar demonstrations.
Fixes:
  1. CBCGPToolBar: addresses issue with creating of the new toolbar (in customization mode) on incorrect (not current) monitor.
  2. CBCGPGaugeImpl: addresses issue with sending tracking event to the correct parent windows.
  3. CBCGPMiniFrameWnd: addresses problem with caption buttons tooltip appearance.
  4. CBCGPPngImage: addresses problem with __stdcall calling convention.
  5. CBCGPPropList: addresses problem with in-place edit background color when control is located on row with the alternate color.
  6. CBCGPRibbonBar::OnLButtonDblClk doesn't block left mouse button clicks anymore. For example, if you click specific control several times, all clicks will be translated to corresponding control's command.
  7. CBCGPGridCtrl: fixed DPI issue for the grid Combo-box item and Auto-Complete list, now font of a dropped list is scaled accordingly.
  8. CBCGPGridCtrl: addresses issue with in-place editing of the merged cells.
  9. Chart: fixed bug in hit-testing points for stock chart in the line mode.
  10. Chart: fixed a bug of recalculation of axis values when adding an array of double values.
 
Version 27.2. Released 4/9/2018
New features
  1. Introduced new Circular Progress Indicator gauge (see screenshot). This gauge implements a circular progress control functionality and can be created either as "standard" (with percentage) or "marquee" (infinite) mode. The following new classes were added:
    1. CBCGPCircularProgressIndicatorImpl: windows-less object which can be used inside the visual container.
    2. CBCGPCircularProgressIndicatorCtrl: control that can be added directly to dialog box or other windows.
    3. CBCGPCircularProgressIndicatorOptions: circular progress indicator options (such as dimensions, styles, colors and others).
    4. CBCGPCircularProgressIndicatorColors: circular progress indicator color theme.
    5. CBCGPCircularProgressIndicatorRenderer: window-less helper; allows to draw the indicator inside other controls such as buttons or tabs (see screenshot).

     Please take a look at BCGPGaugesDemo example ("Circular Gauges | Progress Indicator" page) to see this new gauge in action.
     
  2. Improved Windows Gestures support:
    1. Added gesture pan support to CBCGPFormView.
    2. Gantt chart window can be horizontally scrolled now using gestures.
    3. Improved gesture pan support in the Grid in-place editing controls.
    4. Gesture zoom event is used for the Grid control zooming in/zooming out.
    5. Property grid can be vertically scrolled now using gestures.
    6. Added gesture pan support to Ribbon backstage view.
  3. The Ribbon bar can be created now as a child control of the dialog (see screenshot). All Ribbon bar features (except few limitations) are working properly in this mode. The limitations include inability to minimize the Ribbon, using key-tips, replace the parent window caption and using QAT. Please take a look at new sample RibbonDialogDemo to see this mode in action.
     
  4. Ribbon Bar
    1. CBCGPBaseRibbonElement : added a new virtual method CanBeResizedInGroupVertically. Override it if you wish to keep your custom Ribbon control height when this control is located inside group or Quick Access Toolbar.
    2. Increased the Quick Access Toolbar height in some visual themes (to make a QAT look more close to MS Office applications).
    3. CBCGPRibbonMainPanel: added a new virtual method GetExtraHeight(). Override this method if you wish to increase height of the Ribbon application menu.
    4. Ribbon Designer: implemented ability to specify application button custom text label.

  5. MDI Windows and Tabs
    1. CBCGPMainClientAreaWnd: standard MDI children layout messages (WM_MDICASCADE, WM_MDITILE and WM_MDIICONARRANGE) are blocked now when MDI tabbed groups are active.
    2. Improved MDI "Windows" menu: instead of using a standard Windows menu, we're building now a list of windows across all MDI frames (both main and torn-off). If for some reason you need to keep an old Windows menu mechanism, please set m_bUseWindowsMenu to TRUE in your CMainFrame class constructor.
    3. All MDI torn-off frames will be automatically re-attached to the main frame when MDI tabbed groups are switched-off (tear-off MDI windows can work with MDI tabbed groups only). A new CBCGPMDIFrameWnd::ReattachTearOffWindows method allows to reattach all MDI torn-off frames back to the main application frame.

  6. Grid and Report Controls
    1. Updated Windows Gestures support.
    2. Updated adding and removing items in row "on the fly". New methods CBCGPGridRow::InsertItem, CBCGPGridRow::RemoveItem were added.
    3. Implemented grid items Bold font support. New methods CBCGPGridRow::SetBoldFont and CBCGPGridRow::IsBoldFont were added.

  7. Gauge Controls
    1. CBCGPCircularGaugeImpl: added a new virtual method OnDrawLevelBar. Override it if you wish to customize the level bar appearance.
    2. CBCGPBaseVisualCtrl:: CreatePopup has a new, optional parameter nFlags: set it to BCGP_VISUAL_POPUP_DONT_CLOSE_ON_MOUSE_CLICK if you don't wish to close the popup window by mouse button click.
    3. CBCGPSwitchImpl: implemented visual manager theme support (see screenshot). New methods SetVisualManagerTheme and IsVisualManagerTheme were added to this class. In addition, CBCGPVisualManager has a new virtual method GetSwitchColors.
    4. CBCGPCircularGaugeImpl: added equidistant labels support. New methods EnableEquidistantLabels and IsEquidistantLabels were added to this class.

  8. Controls
    1. Tab control is renamed properly now when user clicks with left mouse button outside in-place edit control.
    2. CBCGPButton: icon rendering code was moved to new virtual method OnDrawImage.
    3. CBCGPColorComboBox can display a list of application "accent" colors (see screenshot): SetAccentColors method was added. You may specify the accent color names by calling CBCGPColorComboBox::SetAccentColorName or obtain them using CBCGPColorComboBox::GetAccentColorName. Please take a look at ComboBoxDemo sample to see this feature in action.
    4. CBCGPMenuButton: new virtual method OnDrawMenuArrow allows to customize the button's drop-down arrow appearance.
    5. CBCGPTreeCtrlEx: added support for TVIS_BOLD flag (see screenshot).

  9. Graphics Manager
    1. New methods CBCGPColor::Mix and CBCGPBrush::Mix allow to combine two colors using a specific proportion.
    2. CBCGPBrushGradientStop: added default values to the constructor.

  10. Miscellaneous
    1. Method CBCGPChartVisualObject:: NeedDisplayAxes is a virtual now.
    2. Improved full-screen appearance: the full-screen window doesn't have non-client area and developer can hide "Close" toolbar by calling new method EnableFullScreenCloseToolBar (CBCGPFrameWnd and CBCGPMDIFrameWnd classes).
    3. New method CBCGPGlobalUtils::IsPlacedOnActiveMenu tells whether a control is located on the active popup menu/window.
    4. CBCGPSVGImageList: improved SVG sprite loading and parsing algorithm. Each icon is loaded now as separate SVG, therefore there is no ambiguous styles issue (when source SVG icons have the same style names) anymore.

  11. Examples and Samples
    1. BCGPGaugesDemo: added new view ("Circular Gauges | Progress Indicator") that illustrates a Circular Progress Indicator.
    2. ColorThemeToolbar: this sample was redesigned in order to demonstrate how to adapt SVG-based toolbars to various color themes (see screenshot).
    3. LightBoxDemo: illustrates usage of CBCGPCircularProgressIndicatorCtrl in the light box-style dialog (see screenshot).
    4. New sample RibbonDialogDemo (see screenshot) demonstrates how to create the Ribbon Bar on the dialog box.
    5. TabControl: added CBCGPCircularProgressIndicatorRenderer usage demonstration.
    6. TreeCtrlDemo: added TVIS_BOLD style demonstration.
    7. MDITabsDemo: added demonstration of MDI child tear-off support.

Fixes:
  1. CBCGPLightBoxDialog: the title is properly updated now when the window caption was changed using WM_SETTEXT message.
  2. CBCGPHeaderCtrl: addresses issue with right-aligned text appearance: in the previous version the label was too close to the right side of the header control item.
  3. CBCGPGridCtrl: addresses issue with incorrect column width after zoom-in/zoom-out action (when column auto-sizing is specified).
  4. CBCGPHotSpotImageCtrl: addresses issue with control appearance in the right-to-left layout.
  5. CBCGPListBox: addresses problems with LBS_MULTICOLUMN control style. If this style is applied, support of item descriptions, captions, tab stops, indentions is disabled now.
  6. CBCGPPropertySheetCtrl: addresses issue with incorrect page border appearance in non-themed property sheet with a standard Windows tab control. In the previous product versions, the page exceeded control size on the first displaying.
  7. Addresses issue with pane dividers, pane dragging rectangles and MDI tab group dividers appearance during dragging/resizing. The redesign was caused by incorrect working of the standard Windows dragging rectangles mechanism in the latest OS builds (user sees annoying rectangle trails).
  8. CBCGPMenuButton: addresses issue with control resizing when parameter bCalcOnly of SizeToContent method is TRUE.
  9. CBCGPRibbonEditCtrl: addresses issue with double-sending notification when user presses Enter on the popup Ribbon panel.
  10. CBCGPVisualManager2007: fixed text label color bug in the scenic (rectangular) Ribbon application button.
  11. CBCGPToolBarImages::SetSingleImage correctly specifies the image size in case of single SVG icon.
  12. Addresses issue with appearance of the context help icon on the dialog/frame caption in some visual themes.
  13. CBCGPToolBar: addresses problem with unexpected closing dropped-down menu when user moves the mouse cursor to another button without menu.
  14. CBCGPRibbonBar: addresses issue with improper hiding of some controls when application mode is switched. In the previous versions some Ribbon elements with embedded control (such as edit box or combo box) remained visible even when they were filtered-out by application mode.
  15. CBCGPScrollBar: addresses issue with disabling scrollbar thumb in combo box drop-down list in specific cases.
 
Version 27.1. Released 2/12/2018
New features
  1. Grid and Report Controls
    1. Improved vertical and horizontal header items appearance.
    2. CBCGPGridColorItem: added custom colors support - new methods SetColors and SetWebColors were added to this class.
  2. Grid and Report Controls
    1. Updated Windows Gestures support.
    2. Updated adding and removing items in row "on the fly". New methods CBCGPGridRow::InsertItem, CBCGPGridRow::RemoveItem were added.
    3. Implemented grid items Bold font support. New methods CBCGPGridRow::SetBoldFont and CBCGPGridRow::IsBoldFont were added.

  3. Controls
    1. CBCGPColorButton: added a new method 'SetWebColors'. Call it to display a standard Web colors palette in the drop-down window.
    2. CBCGPDateTimeCtrl: added system month format support. Set m_monthFormat to (-1) in order to use short date format (see screenshot).
    3. CBCGPStatic: new method 'SetPicture(const CString& strImagePath, BOOL bDPIAutoScale = TRUE, BOOL bAutoResize = FALSE)' allows to display external (loaded from file) images.
  4. Miscellaneous
    1. CBCGPColorMenuButton: added a new method 'SetWebColors'. Call it to display a standard Web colors palette in the drop-down window.
    2. CBCGPStatusBar: added themed tooltips support (see screenshot). Call new method CBCGPStatusBar::SetTipDescription to specify the tooltip description (multi-line text below tooltip label).
    3. CBCGPSVGImage::ExportToBitmap has a new, optional parameter 'clrBackground'. If this parameter is not CLR_NONE, the method creates 24bpp bitmap with specified background. Otherwise, 32bpp bitmap with transparent background will be created.
Fixes:
  1. CBCGPComboBox: addresses issue with missing group separator in non-themed combo box.
  2. Fixed compilation issue when _ATL_NO_AUTOMATIC_NAMESPACE flag is specified.
  3. CBCGPPlannerViewSchedule: addresses issue with incorrect returned value in GetResourceFromPoint method (when resources count is one).
  4. CBCGPScrollBar: fixed some problems with horizontal scrolling in the themed (Visual Manager-enabled) list view control.
  5. CBCGPPropertyPage: fixed problem with redrawing group boxes during the page transition process.
  6. CBCGPSVGImage: fixed memory leak in DoDraw method (when parameter 'bCashBitmap' is FALSE).
  7. Toolbar Editor: fixed problem with adding SVG images to the default (16 colors) toolbar.
  8. Editor Outline Parser: improved 64-bit support.
 
Version 27.0. Released 1/24/2018
New features
  1. Added SVG images support. Please read the following article which describes advantages of using SVG in your applications, tutorials and references: www.bcgsoft.com/Doc/VectorGraphics.htm.
    All library internal images were converted to SVG format and Application Wizards include a new option: create a project with SVG icons (see screenshot).
    The following new classes were added to the product:
    • CBCGPSVGImage: implements an SVG image loading and rendering.
    • CBCGPSVGImageList: implements a list of SVG images ("sprite").
    Please take a look at new SVGViewDemo sample application (see screenshot) to see this new implementation in action.
    For your convenience, our designers prepared a set of SVG icons that you may freely use in your applications! Please find them in Graphics folder - there are 40 16x16 and 20 32x32 basic icons, hope you'll like them!
  2. Ribbon Bar
    1. CBCGPRibbonMainButton::SetImage and CBCGPRibbonMainButton::SetScenicImage methods have a new, optional parameter 'bDPIAutoScale'. Set it to TRUE if you wish to scale application button's image according to current DPI.
    2. Ribbon Bar controls key tip is not limited by 2 characters now.
    3. New method CBCGPRibbonBar::SetTabButtonIcons allows to specify icons for controls located on the right side of the tabs area.
    4. New virtual method CBCGPRibbonBar::PrepareCustomLabel allows to change the command label appearing on the customization dialogs. The default appearance is "<command> (custom)".
    5. CBCGPRibbonBar: added SVG icons support.
    6. Ribbon Designer supports SVG images now.
    7. Optimized backstage view header redrawing.

  3. Docking Panes
    1. CBCGPOutlookWnd: added SVG icons support.
    2. CBCGPTasksPane: added SVG icons support.
    3. CBCGPToolBar: added SVG icons support.

  4. Visual Manager and Themes
    1. CBCGPVisualManager2016: improved non-client colors in Office2016 Black theme.
    2. CBCGPVisualManager2016: improved appearance of Outlook bar page buttons.
    3. Improved appearance of checked Ribbon buttons in Office 2013/2016 themes.
    4. Added new global member CBCGPVisualManager::m_strStylePath that allows to specify style DLLs location.

  5. Grid and Report Controls
    1. New message BCGM_GRID_HEADER_CHANGED is called on any changes on grid header, when columns are inserted, deleted or column position, size or visibility are changed.
    2. Added new virtual method IsReportCtrl().
    3. Grid control: fixed print preview issue. Now the selected printer font is consistent in print preview mode and the print out.

  6. Calendar and Planner
    1. Implemented new view type: BCGP_PLANNER_TYPE_WEEK_DAYS (see screenshot). This view can be used instead of the standard week-view to show the week in multi-column mode (like work-week view).
    2. CBCGPPlannerManagerCtrl: added new attribute "Schedule Time Delta Day". Setting it to TRUE allows to display more appointments on the screen without scrolling the planner view. Call new method CBCGPPlannerManagerCtrl::SetScheduleTimeDeltaDay to set "day" scale instead of the standard "time" scale (60, 30, 20, ... minutes).
    3. Schedule View columns are automatically stretched now to occupy all free space.
    4. Implemented ability to display an item's tooltip in bounds of the whole appointment: SetToolTipWholeArea and IsToolTipWholeArea methods were added to CBCGPPlannerManagerCtrl class.

  7. Controls
    1. Added new method CBCGPBaseTabWnd::SetImageAutoScale. Call this method before CBCGPBaseTabWnd::SetImageList to automatically scale tab icons according to current DPI.
    2. CBCGPButton: added SVG image support.
    3. CBCGPDateTimeCtrl: implemented "read-only" mode. Call new method SetReadOnly to enable/disable this mode or IsReadOnly to check the mode.
    4. CBCGPEdit: added button's tooltip. Call new method SetBrowseButtonToolTip to specify the tooltip.
    5. CBCGPHeaderCtrl: implemented ability to align header item text on top. SetColumnTextVertTopAlign and IsColumnTextVertTopAlign methods were added.
    6. CBCGPComboBox: improved appearance of icons in the disabled control.
    7. CBCGPTreeCtrlEx: optimized control items adding performance.
    8. CBCGPComboBox: added ability to use a custom edit control - override new virtual method GetEditCtrl and return a reference to CBCGPEdit-derived object.
    9. CBCGPStatic: added a picture support. Call new method CBCGPStatic::SetPicture to display BMP, PNG or SVG image inside the control.

  8. Graphics Manager
    1. Added new class CBCGPGeometryGroup: implements a group of the geometries.
    2. CBCGPBrush: added gradient stops support (D2D and GDI+ only). SetLinearGradientStops, SetRadialGradientStops and GetGradientStops methods were added.
    3. CBCGPBrush: added color transformation methods:
      • AddaptColors: translates brush color(s)
      • InvertColors: inverts brush color(s)
      • ConvertToGrayScale: converts brush color(s) to gray scale
      • Simplify: simplifies brush color(s) - all "non-empty" colors are converted to white
    4. CBCGPStrokeStyle: implemented custom dashes support; SetDashes method was added.
    5. Implemented GDI+ graphics manager - CBCGPGraphicsManagerGdiPlus. This class will be automatically used when your application is launched on system where D2D is not available, e.g. Windows XP. If you need to force GDI+ manager usage, please specify BCGP_GRAPHICS_MANAGER_GDI_PLUS in CBCGPGraphicsManager::CreateInstance method.

  9. Miscellaneous
    1. libpng (used for PNG images rendering) was upgraded to version 1.6.34.
    2. Added new method BCGPGLOBAL_DATA::GetCommonIcon: this method returns an Office-style icon such as Warning, Question, Error or Info. These icons can be used in Message Boxes or user's application.
    3. CBCGPMessageBox: added Office-style icons (see screenshot). If you wish to use native Windows icons, simply set CBCGPMessageBox::m_bUseNativeIcons to TRUE.
    4. CBCGPPngImage class doesn't use ATL's CImage class by default anymore: libpng is used in all Visual Studio versions. If for some reason you don't want to use libpng, please uncomment BCGP_USE_CIMAGE_FOR_PNG in BCGCBProConfig.h and rebuild the library.
    5. CBCGPToolBarImages supports SVG images now (in the previous product versions only BMP and PNG formats were supported).
    6. Toolbar Editor supports SVG images now.
    7. Added new definition BCGP_USE_EXTERNAL_ZLIB to BCGCBProConfig.h: uncomment it if you're using external ZLIB in your project.
    8. BCGPGLOBAL_DATA::SetDPIAware method was adapted to Windows 10 Creators Update (Build 1709) changes.

Fixes:
  1. Fixed some problems with compilation in Visual Studio 2017 with /permissive- compiler option.
  2. CBCGPPropertyPage: fixed problem with a default button appearance on the themed wizard page in "aero" mode.
  3. Dialogs: fixed info tip positions after changing controls layout.
  4. CBCGPListBox: fixed problem with WM_COMPAREITEM message processing in CBCGPListBox-derived classes.
  5. CBCGPPropList: improved appearance of read-only date/time property.
  6. CBCGPRadialMenuObject: fixed bug with radial menu size after animation in high-DPI systems.
  7. CBCGPRibbonEdit: fixed bug with setting read-only mode after installing latest Windows 10 updates.
  8. CBCGPTasksPane: fixed bug with incorrect MSAA behavior when task pane's embedded toolbar is re-created.
  9. CBCGPToolBarImages: improved image pre-processing mechanism. GetPixel/SetPixel methods are no more called in case of 24 or 32 bpp images. If you're still using 16 or 256 colors images, please consider to upgrade them to higher resolution to prevent application loading time problem under Windows 10 with latest updates.
  10. CBCGPTasksPane: fixed bug with task label vertical alignment is some visual themes.
  11. CBCGPWinUITiles: fixed bug with tiles layout after deleting all tiles in group.
  12. CBCGPGridCtrl: fixed color issues in report control with theme colors specified by m_ColorData.
  13. CBCGPGridCtrl: fixed drawing bug in multiline header: the merged header items with FreezeColumns feature and horizontal scrolling.
  14. CBCGPHeaderCtrl correctly draws center/right-aligned icons now.
  15. CBCGPRibbonBar: fixed bug with a caption redrawing after backstage horizontal scrolling in some visual themes.
  16. CBCGPGridCtrl: fixed some problems with a grid scrolling during selection by mouse.
  17. CBCGPScrollBar: fixed some issues with using control in the touch-screen environment.
 
Version 26.1. Released 10/16/2017
New features
  1. Visual Manager and Themes
    1. CBCGPVisualManagerVS2012: added new static member 'm_bThinSlider'. Set it to TRUE if you wish to see Office 2013/2016-like thin pane sliders (screenshot).
    2. CBCGPVisualScrollBar: improved look of Visual Manager-style scrollbar when default ("Native Windows") Visual Manager is activated.
    3. CBCGPVisualManager: implemented default Windows scrollbar rendering methods such as OnScrollBarDrawThumb, OnScrollBarDrawButton and OnScrollBarFillBackground.
    4. CBCGPVisualManager: improved Breadcrumb and WinUI Tiles appearance in the high-contrast mode.

  2. Controls
    1. CBCGPEdit: autocomplete can be used along with a popup dialog now.
    2. CBCGPDateTimePropAttributes: added new attribute 'm_bDisplayCalendarTodayButton'. Set it to FALSE to hide "Today" button in CBCGPDateTimeProp dropped-down calendar.
    3. CBCGPDateTimeCtrl: implemented ability to hide "Today" button in the dropped-down calendar. EnableCalendarTodayButton and IsCalendarTodayButtonEnabled methods were added.
    4. CBCGPComboBox: new method 'AdjustDroppedWidth' sets the drop-list width by the widest combo box item.
    5. CBCGPInfoBoxRenderer: new member 'm_bRoundedCorners' allows to specify info box rounded corners (see screenshot).

  3. Miscellaneous
    1. All library, tools and samples icons were fully redesigned.
    2. CBCGPGraphicsManagerD2D: new virtual method 'GetCurrentRenderTarget' allows to use a custom, ID2D1RenderTarget-derived interface in CBCGPGraphicsManagerD2D-derived classes.
    3. New CBCGPWorkspace member 'm_bExitingFullScreenMode' indicates that full-screen mode is being closed now.
    4. CBCGPTasksPane: improved control redrawing upon resizing of custom child windows.

  4. Examples and Samples
    1. BCGPControls: demonstrates how to hide "Today" button in the date/time picker.
    2. BCGPMSOfficeDemo: demonstrates thin sliders in Office 2013/2016 themes.
    3. InfoBoxDemo: illustrates info-box rounded corners.

Fixes:
  1. Toolbar/menu buttons: fixed bug with displaying an underlined character if text label has double ampersands.
  2. Fixed bug with highlighting Ribbon caption system buttons.
  3. Breadcrumb control: fixed bug with displaying an icon on highlighted drop-down menu items in high-contrast display mode.
  4. CBCGPRibbonPanel: fixed bug with displaying user-defined tool with ampersand character in the text label.
  5. Toolbar customization: optimized mouse cursor changing when user starts dragging item from the customization dialog.
  6. Chart: fixed problem with data point position calculation in range bars.
 
Version 26.0. Released 9/27/2017
New features
  1. A new Light Box dialog class (CBCGPLightBoxDialog) was added (see screenshot). We're assuming that most of you already used Light Boxes in the Web/Mobile applications - they are very popular today. But we strongly believe that this kind of UI can be successfully used in the desktop applications too, so we decided to implement them in our libraries. Please take a look at LightBoxDemo new sample application to see this feature in action. Hope, you'll like this modern UI style and you can easily add these dialogs to your applications and make your nice-looking programs even better!
  2. Ribbon Bar
    1. Optimized Ribbon backstage view redrawing.
    2. New virtual method 'CBCGPRibbonBar::GetSystemIconSize' allows to display a custom-size system icon on the left-top corner of the Ribbon Bar.
    3. CBCGPRibbonCategory::IsHiddenInAppMode method is virtual now: you may override it to show/hide the Ribbon category (tab) under certain conditions.

  3. Toolbars and Menus
    1. CBCGPDropDownToolbarButton: method SetDefaultCommand is virtual now.
    2. CBCGPExplorerToolBar: added optional "Home" button (see screenshot). CBCGPExplorerToolBar::EnableNavigationButtons has a new optional parameter 'UINT nHomeID'. ExplorerBarDemo sample application demonstrates this new feature.

  4. Chart Control
    1. Chart legend: added ability to specify a legend cell text alignment: new SetTextAlignment and GetTextAlignment methods were added to CBCGPChartLegendCell class.
    2. Added ability to draw unsorted 'Pyramid' and 'Funnel' charts as sorted by default. Please call 'EnableDataPointsSorting(FALSE)' method to draw chart data points in the order they were added.
    3. Added order type for the legend entries. Call new method 'CBCGPChartVisualObject::SetLegendOrder' to set the order. The possible values are:
      • LO_SERIES - default value. Draw entries in the order they were added.
      • LO_REVERS - always in reversed order.
      • LO_CHARTTYPE - depends on the chart type.
  5. Visual Manager and Themes
    1. Office 2016-like Visual Theme: improved system buttons appearance (see screenshot).
    2. New virtual method CBCGPVisualManager::OnDrawLightBoxDialogCloseButton allows to customize LightBox dialog "Close" button appearance.

  6. Grid and Report Controls
    1. New virtual method CBCGPGridItem::OnAddComboBoxItem allows to customize cell combo box items adding.
    2. A new virtual method CBCGPGridCtrl::CanShowColumnInColumnChooser allows to hide some columns in a Column Chooser pane.
    3. Added ability to disable header highlighting when all items in row are selected. New methods SetDisableWholeSelHeaderHighlighting and IsDisableWholeSelHeaderHighlighting were added to CBCGPGridCtrl class.
    4. New virtual method CBCGPGridCtrl::OnAfterTrackHeader is called after header item was resized by the user.
    5. New method CBCGPGridCtrl::IsWholeRowSelected checks whether all items in a row are selected.

  7. Property Grid Control
    1. New virtual method CBCGPProp::OnAddComboBoxItem allows to customize adding combo box items.
    2. CBCGPBitwiseProp constructor has a new, optional parameter 'parAllowedFlags' - array of values that can be displayed and selected.
    3. Added ability to enable/disable grid lines: EnableGridLines, HasHorizontalGridLines and HasVerticalGridLines methods were added to CBCGPPropList class.
    4. Implemented grid row vertical padding. Increasing a padding value makes the property grid control more touch-friendly. Call new method 'CBCGPPropList::SetRowPadding' to specify the row padding and 'CBCGPPropList:: GetRowPadding' to obtain a padding value.
    5. Added alternate rows support (see screenshot): call new method 'CBCGPPropList::SetAlternateRowColor" to enable/disable drawing odd/even grid rows using different colors. 'CBCGPPropList::IsAlternateRowColor' tells weather an alternate rows support is enabled or not.

  8. Controls
    1. CBCGPAnimCtrl::SetBitmap has a new, optional parameter 'bDPIAutoScale'. Set it to TRUE if you wish to scale animation frames list according to current DPI.
    2. Calendar bar allows keeping selection when user clicks some day from the previous or next month. If for some reason you need to keep a former behavior, set new global flag CBCGPCalendar::m_bSelectNextPrevMonthDate to FALSE.
    3. CBCGPComboBox: implemented vertical and horizontal item paddings. SetVerticalPadding, GetVerticalPadding, SetHorizontalPadding and GetHorizontalPadding methods were added.
    4. CBCGPHeaderCtrl: added support for HDS_CHECKBOXES and HDS_NOSIZING Windows styles.
    5. CBCGPHeaderCtrl: implemented multi-rows support. SetRows, GetRows and HasWordBreak methods were added to this class.
    6. CBCGPHeaderCtrl: implemented column's text color support. SetColumnTextColor and GetColumnTextColor methods were added.
    7. CBCGPInfoBoxRenderer: m_bFixedFrameWidth and m_bFixedFrameHeight flags were added. If these flags are TRUE, the info box frame will occupy the whole control area.

  9. Miscellaneous
    1. Implemented ability to use a parent window's font in all dialog controls. To activate it, you've to set a new global attribute 'globalData.m_bUseDlgFontInControls' to TRUE.
    2. Implemented tab state animation ("busyness indicator" - see screenshot). The following methods were added to CBCGPTabWnd class:
      • SetTabStateAnimationImages: specifies animation frames image list.
      • StartTabStateAnimation: starts animation. The animation frames will be drawn instead of tab icon.
      • StopTabStateAnimation: stops animation.
      • IsTabStateAnimation: tells whether tab state animation is running now.
      • ResetTabStateAnimationStep: makes first animation frame as current.
      • OnDrawTabStateFrame: this new virtual method allows drawing your own tab animation.
      Please take a look at BCGPInternetExplorerDemo and TabControl samples to see this feature in action.
    3. Added support for System DPI Aware (Windows 10 Creators update) in 'globalData.SetDPIAware' method.

  10. Examples and Samples
    1. New sample application LightBoxDemo demonstrates LightBox Dialog (see screenshot).
    2. BCGPControls: demonstrates Property Grid alternate rows and Animation control DPI auto-scaling.
    3. BCGPInternetExplorerDemo: shows how to add a state animation to MDI tabs.
    4. ComboBoxDemo: demonstrates how to specify combo box item vertical and horizontal paddings.
    5. ExplorerBarDemo: added explorer bar "Home" button demonstration.
    6. TabControl: demonstrates tab state animation.


Fixes:
  1. CBCGPAnimationManager: fixed some issues in "legacy" (timer-based) animation. This fix improves animation process under Windows XP or earlier versions where Windows native animation is not available.
  2. CBCGPButton::OnPaint passes ODS_DISABLED flag to CBCGPButton::DoDrawItem if control is disabled.
  3. CBCGPColorDialog: fixed some problems with an idle processing in color picker mode.
  4. CBCGPGroup: invisible groups are not rendered anymore by the parent dialog now.
  5. CBCGPDockManager: control bars context menu is not displayed in the print-preview mode now.
  6. CBCGPMDIChildWnd: fixed bug with tracking system buttons on inactive MDI child frame.
  7. CBCGPListBox: corrected pin location when control has a horizontal scroll bar.
  8. CBCGPPropList: fixed bug with check box disappearing when property menu button is not enabled.
  9. CBCGPStatic: fixed some drawing problems when control has SS_ENDELLIPSIS or SS_LEFTNOWORDWRAP Windows styles.
  10. Charts: fixed problem with default tooltip in the 'Pyramid' and 'Funnel' charts.
  11. CBCGPInplaceToolTipCtrl: fixed bug with multiline tooltip appearance.
  12. CBCGPGridCtrl: fixed bug with sorting unsigned integers.
  13. CBCGPEditCtrl: fixed bug with highlighting markers on typing.
  14. CBCGPTreeCtrlEx::GetItem is working correctly now when TVIF_HANDLE is not specified in pItem->mask.
 
Version 25.3. Released 5/22/2017
New features
  1. Visual Studio 2017 support:
    • The product Integration Wizard fully supports Visual Studio 2017: since you can install different VS editions on the same machine, the wizard allows to choose which VS edition should be integrated with our product.
    • The source files are fully compliant with Visual 2017 C++ compiler.
    • All our examples and samples were thoroughly tested with VS 2017.
    • Evaluation version contains DLLs and libraries required for VS 2017.
  2. Enhanced Windows 10 support:
    • VS 2012-2017 and Office 2013-2016 Visual Managers may use Windows accent color now (see screenshot). CBCGPVisualManagerVS2012::AccentColor enumerator has a new member VS2012_Default. The application appearance is automatically updated when user changes the accent color in Windows "Settings" dialog. Please take a look at BCGPMSOfficeDemo and BCGPVisualStudioGUIDemo examples to see this feature in action.
    • The product is fully tested under Windows 10 Creator Update.
    • Improved non-client area appearance when title bar is using Windows accent color (see screenshot)
  3. Ribbon Bar
    1. A frame windows classes (CBCGPFrameWnd and CBCGPMDIFrameWnd) have a new method GetRibbonBackstageView. Call it to obtain a pointer to the currently active Ribbon backstage view.
    2. The system menu style (default or themed) can be specified by calling new method 'SetDefaultSystemMenu'.
    3. Ribbon category scrolling can be enabled or disabled by calling new CBCGPRibbonCategory method 'EnableScroll'.
    4. Ribbon edit box can be created with “read-only” style: SetReadOnly and IsReadOnly methods were added to CBCGPRibbonEdit class.
    5. Added ability not to capture mouse events while Ribbon mini-toolbar (“floaty”) is displayed: SetMouseCapture and IsMouseCapture methods were added to CBCGPRibbonFloaty class.
    6. A new virtual method 'CanBeRemovedFromQAT' was added to CBCGPBaseRibbonElement class. Override this method and return FALSE if you wish to prevent removing control from the Ribbon QAT.
    7. CBCGPRibbonButtonsGroup: added new methods Remove and RemoveByID.

  4. Dialogs and Forms
    1. Flicker-less group boxes rendering. To optimize group boxes drawing and prevent flickering while dialog/form is being resized, we've moved group box rendering to the parent window. If for some reason you wish to disable this feature, simply call new method of CBCGPDialog, CBCGPDialogBar, CBCGPFormView and CBCGPPropertyPage classes SetGroupBoxesDrawByParent(FALSE).
    2. Automatically resizable check boxes, radio buttons and static labels. Sometimes (especially in high DPI modes), the text label is truncated and developer have to add some extra space to control. Calling new method of CBCGPDialog, CBCGPDialogBar, CBCGPFormView and CBCGPPropertyPage classes AutoResizeControls solves this problem.
    3. The keyboard shortcuts are not underlined on the dialog controls until user doesn't press Alt key.

  5. Docking Panes
    1. Outlook bar: implemented Office 2013/2016-like compact mode (see screenshot). New 'SetMode2013' and 'IsMode2013' methods were added to CBCGPOutlookBar class. Please take a look at BCGPOutlookDemo example to see this new feature in action.
    2. CBCGPToolBox and CBCGPToolBoxEx allow to add empty pages now.

  6. MDI Windows and Tabs
    CBCGPMDITabParams has a new member 'm_bCloseTabOnMiddleClick'. Set it to FALSE if you don’t wish to close MDI child window by clicking its tab by the middle mouse button.

  7. Chart Control
    BCGPChartCategory has 2 new categories: BCGPChartBarSmart and BCGPChartBar3DSmart. Use these categories for "comfortable" placing chart series (MS Excel-like).

  8. Gauge Controls
    Implemented circular and linear gauges' level bars (see screenshot). The bar can be created with one of the following styles:
    • Rectangular
    • Rectangular with rounded corners
    • Thermometer (linear gauge only)
    The following new methods were added to CBCGPGaugeImpl class:
    • AddLevelBar
    • ModifyLevelBar
    • GetLevelBarsCount
    • GetLevelBar
    • RemoveLevelBar
    • RemoveAllLevelBars
    • SetLevelBarValue
    Please take a look at BCGPGaugesDemo example to see this new feature in action.

  9. Visual container and Visual Designer
    1. A data animation type can be changed by calling new CBCGPBaseVisualObject method “SetDataAnimationType”. “GetDataAnimationType” returns an animation type.
    2. Visual container/control can be printed using some options specified by CBCGPVisualPrintOptions:
      • m_bPrintScreenshot: print scaled screenshot (faster)
      • m_bUseGDI: use GDI graphics manager
      New methods SetPrintOptions and GetPrintOptions were added to CBCGPBaseVisualCtrl class.

  10. Grid and Report Controls
    1. Improved header icons appearance in various visual themes (see screenshot).
    2. Color bar foreground color is correctly calculated now according to bar background.
    3. CBCGPGridSparklineItem::SparklineType has a new type: SparklineTypeBarSmart. Use this type for comfortable placing chart series (MS Excel-like).
    4. Implemented cell custom tooltips. EnableCustomToolTips and IsCustomToolTipEnabled methods were added. You've to override new virtual method GetItemCustomTooltip to display the custom tooltips.

  11. Property Grid Control
    1. Item buttons have a visual style now (see screenshot). If you wish to display them with a default Windows theme (as it was in the previous product versions), simply call new property grid method SetButtonsDefaultTheme.
    2. Implemented Boolean property style. You can choose between “label” (true or false) or “check box” styles (see screenshot). Call new property grid method SetBooleanPropertiesStyle to specify this style or GetBooleanPropertiesStyle to obtain it. BCGPControlsDemo example demonstrates this new feature in action.

  12. Desktop Alert Window
    CBCGPPopupWindow has a new virtual method 'OnClickCloseButton'. Override this method in a derived class to be notified about clicks on close buttons located at popup window.

  13. Controls
    1. CBCGPColorComboBox: implemented ability to specify a default color – SetDefaultColor and GetDefaultColor methods were added.
    2. CBCGPColorComboBox: added GetSelectedColor method.
    3. CBCGPComboBox: implemented item groups support (see screenshot). New methods SetItemGroupStart and IsItemGroupStart were added. See ComboBoxDemo sample application.
    4. CBCGPDurationCtrl: added new attribute 'CyclicScroll': when this attribute is TRUE, scrolling of the current control part doesn't affect the next control part. SetCyclicScroll/GetCyclicScroll methods were added.
    5. CBCGPListBox: a color bar width can be specified by calling new method 'SetColorBarWidth'. GetColorBarWidth returns a current color bar width.
    6. CBCGPListBox: implemented items indentation. SetItemIndent and GetItemIndent methods were added to this class.
    7. CBCGPListBox: icons associated with disabled list box icons are drawing grayed now.
    8. CBCGPCheckListBox: added radio buttons support (see screenshot). SetItemRadioStyle and IsItemRadioStyle methods were added to this class. Please take a look at ListBoxDemo sample application to see this feature in action.
    9. CBCGPSplitterWnd: a border size can be specified by calling new class method 'SetBorderSize'.
    10. New CBCGPInfoBoxCtrl control implements advanced text box with the following features (see screenshot):
      • Custom background, text and frame colors
      • Caption support
      • Custom paddings
      • Built-in or custom icons
      • Auto-resize
      • Shadow around the frame
      • Color bar
      • Link
      • Copy content to clipboard
      You can use this control instead of multi-line static text. New sample InfoBoxDemo demonstrates this control in action. In addition, window-less class CBCGPInfoBoxRenderer can be used to draw a text box – we’re using it now in many samples.

  14. MSAA and CodedUI Tests
    1. CBCGPAccessibilityData has a new member 'DWORD_PTR m_dwUserData'
    2. Improved accessibility support in CBCGPListBox and CBCGPCheckListBox classes.

  15. Edit control
    1. CBCGPEditCtrl: added a new method ScrollToCaret. Call this method to scroll to the currently focused editor location.
    2. Added a new CBCGPEditCtrl::m_bIntelliSenseCloseOnShift data member. Setting FALSE allows to use '_' symbols in IntelliSense window.

  16. Miscellaneous
    1. Gestures: improved touch screen gesture scrolling in CBCGPEditCtrl, CBCGPGridCtrl, CBCGPScrollBar and CBCGPVisualScrollBar classes.
    2. Added new member to BCGPGLOBAL_DATA: bIsWindows10. This variable is TRUE if application is running under Windows 10 or future versions.
    3. CBCGPSplitterWnd: added ability to specify a border size. SetBorderSize and GetBorderSize methods were added.
    4. CBCGPWinUITilesCtrl: developer can specify tiles runtime class by calling new method SetWinUITilesRTI.
    5. CBCGPDrawManager: added new methods GetColorBrightness and GetContrastColor.
    6. CBCGPEditListBox: added RemoveAllItems new method.
    7. CBCGPPrintPreviewCtrl: implemented CTRL + mouse wheel zooming.
    8. CBCGPShellBreadcrumb: added new virtual method OnAfterEnumFolderItems. Override this method to add custom items to the control.
    9. CBCGPToolBarImages: improved shadow appearance (used by Office XP theme) in 32 bpp mode.

  17. Examples and Samples
    1. BCGPChartExample: added "2D Side by Side Stacked Bar" and "3D Side by Side Stacked Bar" views.
    2. BCGPGaugesDemo: demonstrates how to use gauge level bars.
    3. BCGPGridExample: “Cell Types” view demonstrates how to use custom tooltips.
    4. BCGPMSOfficeDemo: demonstrates usage of Windows 10 Accent color (Office 2013/2016 themes).
    5. BCGPOutlookDemo: demonstrates Outlook 2013/2016 mode.
    6. InfoBoxDemo: this new sample demonstrates how to use CBCGPInfoBoxCtrl.
    7. ListBoxDemo: illustrates check list box radio items.
    8. MDITabsDemo: illustrates enabling/disabling closing tab on middle-button click.
    9. SplashScreenDemo: this new sample demonstrates how to create an application splash screen.

Fixes:
  1. Include of multimon.h file is no longer used when product is compiled in the latest Visual Studio versions.
  2. Chart control: fixed bug with drawing animated objects when image cashing is on.
  3. Controls: standard Windows borders are rendered now when control is not themed.
  4. Dialogs: fixed bug with restoring window placement in the multi-monitor environment.
  5. CBCGPEdit: the background is correct now when control has ES_READONLY style.
  6. Ribbon mini-toolbar (floaty) can be displayed now when Ctrl or Shift keys are pressed.
  7. CBCGPMessageBox: fixed controls layout problem when single-line message width is less than header width.
  8. Ribbon backstage view: fixed issue with delayed page caption drawing when page transition effect is enabled.
  9. CBCGPRibbonQuickStepsButton: fixed size of the gap between the gallery rows.
  10. CBCGPTasksPane: fixed bug with a scroll total size when vertical scroll bar is enabled and tasks/labels are word-wrapped.
  11. Chart control: fixed some problems with drawing logscale axis.
  12. CBCGPEditCtrl: GetCurLine is working correctly now in case of the last document line.
 
Version 25.2. Released 1/30/2017
New features
  1. Added Visual Studio 2017 RC support (retail product version only).
  2. Planner control
    1. Added Outlook-style Schedule View (see screenshot).
    2. Improved control rendering in Office 2013/2016 and Visual Studio 2012/2013/2015 themes.

    3. Please take a look at BCGPCalendarDemo example to see these new features.

  • Ribbon Bar
    1. QAT customization dialog: tooltips were added to the source and destination list boxes (see screenshot).
    2. New parameter of CBCGPRibbonBar::EnableStartPage method 'strPageName' allows to specify a Ribbon start page name.
    3. New method 'CBCGPRibbonPanel::EnableItemsCompacting' allows to keep panel controls in the initial (with maximal width) state and never "compact" them when Ribbon bar width is being reduced.

  • Tab control
    1. Implemented new "Underline" style (see screenshot). STYLE_UNDERLINE was added to CBCGPTabWnd::Style enumeration.
    2. Tab "Documents" menu can be created with following styles: drop-down arrow (default), ellipsis or hamburger (see screenshot). You can specify this style by new parameter of CBCGPTabWnd::EnableTabDocumentsMenu method - 'TabsDocumentsMenuStyle style'.
    3. CBCGPMDITabParams has 2 new members:
      • m_DocumentMenuStyle - document menu style: drop-down arrow (default), ellipsis or hamburger
      • m_bFullSizeButtons - specifies whether to display tab buttons (such as documents menu button). You can set it to TRUE to make your tab control touch-friendly.

        In addition, m_style can be set to STYLE_UNDERLINE (new style). Please launch MDITabsDemo sample to see these new styles.

  • Dialogs
    1. Progress dialog: added custom progress bar support (see screenshot). CBCGPProgressDlgParams has 2 new parameters:
      • m_nProgressHeight: progress bar control height.
      • m_pProgressCtrlRTI: progress control runtime class.

        ProgressDialogDemo sample demonstrates this new feature.

    2. CBCGPPropertySheet has a new look: PropSheetLook_Underline (see screenshot).

  • Grid control
    1. New methods InsertFirstSubItem, InsertLastSubItem allow to insert sub-row at the specific position in a grid.
    2. The wait cursor can be enabled/disabled now - new methods EnableWaitCursor, IsWaitCursorEnabled were added.
    3. Added horizontal auto-scrolling while dragging the grid header items.

  • Controls
    1. Shell controls: implemented ability to insert new items and rename existing ones. The following new methods were added:
      • CBCGPShellBreadcrumb::RenameShellItem
      • CBCGPShellBreadcrumb::AddExistingFolder
      • CBCGPShellList::CreateFolder
      • CBCGPShellList::RenameItem
      • CBCGPShellTree::AddExistingFolder
      • CBCGPShellTree::CreateFolder
      • CBCGPShellTree::RenameItem

    2. CBCGPButton: added tooltip description (see screenshot). CBCGPButton::SetTooltip has a new optional parameter 'LPCTSTR lpszToolTipDescription' and new method CBCGPButton::GetTooltipDescription was added.
    3. CBCGPCalendar: added shadow to drop-down calendar window (see screenshot).
    4. CBCGPListBox: a color bar width can be specified by calling a new method 'SetColorBarWidth'.

  • Miscellaneous
    1. CBCGPToolBar::SetNonPermittedCommands has a new optional parameter 'BOOL bUpdateExistingToolBars'. Set this parameter to TRUE if you wish to update all existing toolbars (for example, hide buttons with "non-permitted" commands).
    2. New method CBCGPToolBar::SetUseToolBarImagesInDropDownMenus specifies whether toolbar images should be used in drop-down menus. By default, toolbar's drop-down menus are using "small" (16 x 16 in DPI = 100%) icons. If you wish to display menus with toolbar icons, call this method with bSet = TRUE.
    3. Visual containers and controls: scrollbar buttons have highlighted state now. CBCGPVisualScrollBarColorTheme has a new 'm_brButtonHighlighted' member.
    4. CBCGPProp::IsModified has a new optional parameter 'BOOL bIncludeSubItems' - set it to TRUE to check if property is modified recursively.
    5. min and max macros are no longer used in the product header files.
    6. DB Grids: the column widths are DPI-scaled now.
    7. Improved MSAA support in CBCGPColorBar, CBCGPColorPickerCtrl and chart controls.
    8. CBCGPExplorerToolBar: improved simplified navigation buttons rendering.
    9. CBCGPMDIFrameWnd::EnableTearOffMDIChildren has a new optional parameter 'CRuntimeClass* pMDITearOffFrameRTI' - you can specify now tear-off ("detached") frame runtime class.
    10. New global flag CBCGPVisualManager::m_bMDIAreaFullRedrawOnActivate allows to optimize MDI child frames redrawing: set it to FALSE if you wish to disable full redrawing upon MDI child frame activation.

  • Examples and samples:
    1. BCGPCalendarDemo: demonstrates new Schedule View.
    2. MDITabsDemo: demonstrates new MDI tab styles and attributes.
    3. ProgressDialogDemo: shows how to create a progress dialog with custom progress bar control.
    4. PropSheetDemo: demonstrates new property sheet styles.
  • Fixes:
    1. CBCGPCalendar: fixed day labels width problem when control has a custom font.
    2. CBCGPChartLegendVisualObject: fixed some layout problems.
    3. CBCGPDateTimeCtrl: fixed bug with a border redrawing when control's auto-size is off.
    4. CBCGPButton: fixed bug with moving focus when user presses control acceleration key.
    5. Gantt chart: fixed bug with synchronization of the vertical scrolling between left-side grid and chart.
    6. CBCGPMDIFrameWnd: position of the tear-off frame is correctly normalized now inside the target monitor.
    7. Outlook bar: corrected location of auto-hide window when the Outlook bar is located on the right side.
    8. Ribbon bar: fixed bug with multiple appearance of separator in "Windows" popup menu.
    9. Ribbon bar: fixed bug with incorrect edit box value if edit box with spin buttons was added to QAT.
    10. Ribbon QAT customization: the control is added after the currently selected item now.
    11. Ribbon dialog bar: edit and combo box controls are correctly displayed on the first row.
    12. CBCGPEditCtrl: fixed bug with line markers. Now offset related data is updated correctly on inserting or removing the text.
    13. CBCGPEditCtrl: control border size is calculated correctly now upon window style changing.
    14. Grid control: fixed some issues with multiline rows that created by SetLinesNumber or CreateMultiLineRow methods.
    15. Planner control: fixed some problems with calendar print/print preview.

    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:
        • BCGP_EDIT_SIZE_NO_LEFT
        • BCGP_EDIT_SIZE_NO_RIGHT
        • BCGP_EDIT_SIZE_NO_TOP
        • BCGP_EDIT_SIZE_NO_BOTTOM

    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.
    Fixes:
    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.
    Fixes:
    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: http://help.bcgsoft.com/ . 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.
    Fixes:
    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.
    Fixes:
    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_COLORFUL
      • BCGP_VISUAL_THEME_OFFICE_2016_DARK_GRAY
      • 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").
    Fixes:
    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.
    Fixes:
    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.
    Fixes:
    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.
    Fixes:
    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.
    Fixes:
    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.
      • CBCGPVisualScrollBar: added scrollbar styles (BCGP_VISUAL_SCROLLBAR_FLAT, BCGP_VISUAL_SCROLLBAR_FLAT_ROUNDED, BCGP_VISUAL_SCROLLBAR_3D and BCGP_VISUAL_SCROLLBAR_3D_ROUNDED)
      • 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.
    Fixes:
    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.
    Fixes:
    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).
    Fixes:
    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.
         
    1. 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'
         
    2. 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.
         
    3. 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.
         
    4. 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 )
           
    5. 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.
         
    6. 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.
    Fixes:
    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 ).
    Fixes:
    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:
       
      1. BCGM_ON_CLICK_METRO_UI_TILE -> BCGM_ON_CLICK_WINUI_UI_TILE
      2. CBCGPMetroUITile -> CBCGPWinUITile
      3. BCGP_METRO_BADGE_GLYPH -> BCGP_WINUI_BADGE_GLYPH
      4. BCGP_METRO_IMAGE_EFFECT -> BCGP_WINUI_IMAGE_EFFECT
      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.
    Fixes:
    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.
         
    Fixes:
    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 BCGM_DIAGRAM_POS_SIZE_CHANGED event.
      • 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.
         
    Fixes:
    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