BCGSoft > BCGSuite for MFC versions

BCGSuite for MFC versions

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). Please take a look at BCGPCalendarDemo example to see this new feature.
  3. 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.

  4. 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.

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

  6. Miscellaneous
    1. Visual containers and controls: scrollbar buttons have highlighted state now. CBCGPVisualScrollBarColorTheme has a new 'm_brButtonHighlighted' member.
    2. min and max macros are no longer used in the product header files.
    3. DB Grids: the column widths are DPI-scaled now.
  7. Examples and samples:
    1. BCGPCalendarDemo: demonstrates new Schedule View.
    2. ProgressDialogDemo: shows how to create a progress dialog with custom progress bar control.
  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. CBCGPEditCtrl: fixed bug with line markers. Now offset related data is updated correctly on inserting or removing the text.
  7. CBCGPEditCtrl: control border size is calculated correctly now upon window style changing.
  8. Grid control: fixed some issues with multiline rows that created by SetLinesNumber or CreateMultiLineRow methods.
  9. 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.

  3. 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:

  4. 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.

  5. 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.

  6. WinUI Tiles control
    1. Implemented Visual Manager-based color theme (see screenshot). SetVisualManagerTheme and IsVisualManagerTheme methods were added to CBCGPWinUITiles class.
    2. WinUI Tile image vertical alignment: SetImageVertAlign and GetImageVertAlign methods were added to CBCGPWinUITile class.

  7. 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.

  8. 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. 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.
    3. CBCGPEdit::EnablePasswordPreview has a new, optional parameter 'bAllowEditingInPreview'.

  9. Miscellaneous
    1. New parameter 'bShowCaret' of CBCGPEditCtrl::SetReadOnly method allows to display the caret in read-only mode.
    2. CBCGPPropertySheet::SetLook has a new optional parameter 'bSimplifiedBackIcon' specifying whether the Aero Wizard "Back" button has a simplified (arrow only) look.

  10. 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. BCGPGaugesDemo: demonstrates new Visual Manager gauge themes.
    4. BCGPGridExample: demonstrates export to HTML embedded chart objects (see "Merged Cells" and "Sparkline" views).
    5. BreadcrumbDemo (see screenshot): this new sample application demonstrates breadcrumb control new and existing features.
    6. ComboBoxDemo: demonstrates combo box item icons and indentations.
  1. Breadcrumb control: correctly sub-classes disabled (with WS_DISABLED style) window.
  2. CBCGPChartStockSeries::OnGetDataPointTooltip and CBCGPChartVisualObject::OnGetToolTip load a format string from the localized resource DLL now.
  3. BCGPMessageBox: fixed font selection bug.
  4. CBCGPRadialMenuObject doesn't "eat" mouse clicks now when user is frequently double-clicking the left button.
  5. Visual Container: fixed bug with inaccurate hit-testing of the selected object resizing anchors.
  6. Combo box control: the control height is correctly calculated now in some DPI modes.
  7. CBCGPEditCtrl: fixed bug with syntax coloring for escape sequences like \" inside a text constants.
  8. CBCGPEditCtrl: fixed a displayed character for hidden whitespaces like TAB and SPACE in Far-Eastern languages.
  9. CBCGPEditCtrl: fixed some scrolling issues in editor.
  10. 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.
  11. Fixed underline font in CBCGPGridURLItem.
  12. Grid control: fixed some problems with MSAA.
  13. Grid control: fixed horizontal image alignment in the header of the grid control.
  14. Dialog boxes: fixed problem with displaying the window system menu when dialog was created without  ‘WS_SYSMENU’ style.


Version 25.0. Released 06/16/2016
New features
  1. 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.

  2. 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.

  3. 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.

  4. 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. CBCGPDrawManager methods ColorMakeLighter and ColorMakeDarker have a new optional parameter 'bKeepSaturation'
    4. 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.
    5. CBCGPTextFormat has a new "End Ellipsis" attribute: SetEndEllipsis/IsEndEllipsis methods were added.

  5. Examples and samples:
    1. TreeCtrlDemo: this new sample demonstrates how to use CBCGPTreeCtrlEx.
    2. BCGPGridExample: demonstrates a new hierarchical grid features (see "Grid" -> "Tree Dialog" menu item) and improved color themes.
    3. HotSpotDemo: demonstrates image DPI scaling and item tooltips.
    4. TagCloudDemo: demonstrates "underline highlighted tag" feature.
  1. CBCGPComboBox: fixed some bugs with the item height calculation.
  2. CBCGPDurationCtrl: embedded spin control width is calculated according to current DPI now.
  3. CBCGPEdit: fixed bug with calculation of the browse button location when control has ES_MULTILINE style.
  4. CBCGPListBox: fixed bug with list box item height when pin items are enabled and current DPI is 200% or greater.
  5. CBCGPPropertyPage correctly processes dynamic info tip mouse clicks when "DragClientArea" is enabled.
  6. CBCGPPropertySheet::RenamePage doesn't loss the icon associated with page in "List Box" mode.
  7. CBCGPRadialMenuObject correctly processes mouse double-click event now.
  8. Grid control: a header supports HDF_BITMAP_ON_RIGHT align flag now. Fixed header alignment of a text label with a header image.
  9. Grid control: empty groups are now hidden if all content is filtered-out.
  10. The grid tooltip is displayed correctly now if control is located on the popup dialog.
  11. Grid control: fixed the minimal size of the Field Chooser window.

Version 24.4. Released 03/02/2016
New features
  1. 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. CBCGPDialog::EnableLoadWindowPlacement and CBCGPPropertySheet::EnableLoadWindowPlacement have a new, optional parameter 'LPCTSTR szWindowPlacementProfile = NULL'. This parameter specifies a registry branch where window placement is saved.
    5. 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.
    6. CBCGPProgressDlg::SetPos has a new, optional parameter 'BOOL bWaitForMessages = TRUE'. This parameter specifies whether the dialog should wait for the Windows messages.

  2. 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.

  3. 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.

  4. Miscellaneous
    1. The product documentation is fully revised now: all help files are located at our new Help site: You are still able to download .CHM files to read the documentation offline.
    2. 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.
    3. 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.
    4. CBCGPDateTimeCtrl::SetEmptyDateLabel allows to display some text label when date/time picker is unchecked.
    5. CBCGPRotationObject::EnableFlatIcons enables/disables rotation menu flat icons (see screenshot).
    6. CBCGPToolBoxPage: added user-defined values associated with toolbox buttons: CBCGPToolBoxPage::SetButtonUserData and CBCGPToolBoxPage::GetButtonUserData methods were added.
    7. New method 'CBCGPVisualContainer::RemoveSelected' removes currently selected objects from the visual container.

  5. Examples and samples:
    1. BCGPChartExample: illustrates new color themes and rotation control with flat icons.
    2. DateTimeCtrl: 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. EditBoxDemo: demonstrates improved control info tips and password preview mode.
    5. PropSheetDemo: demonstrates how to add a custom background image to the property page client area.
    6. ResizableForm: property sheet resize box.
  1. CBCGPButton: fixed redrawing bug when control receives the focus.
  2. CBCGPCalculator::UpdateBuffer correctly parses an empty buffer now.
  3. CBCGPPieChartImpl: fixed 3D pie/doughnut rendering bug in some pie angles.
  4. CBCGPPieChartImpl: improved data labels positions calculation.
  5. CBCGPChartInterLineColoringEffect: fixed some problems caused by "asynchrony" (with different start and end positions) series.
  6. CBCGPChartInterLineColoringEffect: improved polar chart rendering.
  7. CBCGPCircularGaugeImpl::HitTestValue correctly processes reversed scale (where start is greater than finish) now.
  8. CBCGPDiagramShape::OnDraw renders elliptical shape using Thickness property now.
  9. CBCGPLinearGaugeImpl: fixed some bugs with reversed (where start is greater than finish) scales.
  10. CBCGPEdit: fixed bug with changing control mode before window creating (e.g, in the parent dialog constructor).
  11. CBCGPEditCtrl: a mouse wheel message is passed to the active IntelliSense window now.
  12. CBCGPEditCtrl: shift + left mouse click correctly changes the selection range now.
  13. 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).
  14. Grid control: fixed some bugs with in-place edit/browse button location in case of the merged cells.
  15. Grid control: fixed some color issues in the various visual managers.
  16. CBCGPListBox: fixed bug with check box/radio button/color bar size in some screen resolutions.
  17. CBCGPMessageBox: fixed bug with a minimal window width calculation.
Version 24.30. Released 10/15/2015
New features
  1. 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 EditBoxDemo sample to see this new feature in action.
  2. 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.
  3. 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. 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.
    3. 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.
    4. CBCGPButton: added new member 'BOOL m_bNotifyCommandOnDblClick'. Set it to FALSE if you wish to prevent BN_CLICKED command notification upon mouse double-click.
    5. 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.
  4. Examples and samples:
    1. BCGPChartExample: illustrates new style info tips.
    2. EditBoxDemo: added control info tips.
  1. Combo box: fixed some bugs in RTL mode.
  2. Combo box: fixed bug with unwanted closing dropdown list when user clicks the scrollbar (in some visual themes).
  3. A minimized modeless dialog is correctly rendered now.
  4. CBCGPStatic control supports SS_CENTERIMAGE style now.
  5. CBCGPListBox::DeleteItem correctly deletes list box item if LBS_OWNERDRAW* is not specified.
  6. Grid control: fixed some drawing problems in right-aligned grid cells.
  7. Advanced Edit control: fixed some minor problems in control vertical scrolling.


Version 24.20. 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 and all our examples/samples where tested with the new Visual Studio.
  3. 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.

  4. 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.

  5. Miscellaneous
    1. CBCGPButton: added support for the drawing non-focused, default push button.
    2. CBCGPGestureBase: added OnGestureEventBegin and OnGestureEventEnd virtual methods.
    3. CBCGPTextFormat: added SetFontWeight method.
    4. CBCGPMessageBox: the content layout of the message box with header has been improved in this version.

  6. Examples and samples:
    1. BCGPGridExample: new visual themes and filtering.
    2. BCGPCalendarDemo: illustrates new Office 2013/2016-style calendar.
  1. Fixed bug with displaying CBCGPCalculatorPopup windows when the system menu animation is disabled.
  2. CBCGPCalendar correctly shows dates range if SetMinDate/SetMaxDate methods were called for this control or date/time picker.
  3. Fixed bug with hiding dialog shadow in CBCGPDlgImpl::OnActivate method.
  4. Dialogs and Frames with owner-draw caption: the caption height is calculated correctly now if the window has WS_EX_TOOLWINDOW style.
  5. 3D Surface Chart: fixed some rendering bugs.
  6. Linear Gauge: fixed some problems with drawing scales in case of the small ranges and steps.
  7. Grid control: fixed some rendering bugs in high DPI.
  8. Grid control: fixed bug with auto-complete cell using keyboard.


Version 24.10. 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. 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.

  4. 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).

  5. 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.

  6. Miscellaneous
    1. 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.
    2. New method 'CBCGPDrawManager::DrawCheckMark' draws a check mark inside the given box.
    3. CBCGPEdit: added ability to disable right-side button in read-only mode. The following methods were added:
      1. SetDisableBrowseButtonInReadOnlyMode
      2. IsDisableBrowseButtonInReadOnlyMode
      3. IsBrowseButtonEnabled (virtual)
    4. CBCGPListBox: new virtual method 'OnFillItem' allows changing specific item background.
  7. Examples and samples:
    1. Added new sample ExpandDialogDemo (see screenshot): illustrates how to add expandable area to the dialog box.
    2. BCGPGridExample: demonstrates how to export grid data to CSV format.
    3. MessageBoxDemo: demonstrates message header and buttons custom font.
  1. CBCGPListBox: fixed bug with adding strings to non-owner-draw control.
  2. CBCGPPropertySheet: fixed bug with adding pages group caption in the list mode.
  3. CBCGPStatic correctly displays icon on the "aero" background.
  4. CBCGPTextGaugeImpl: fixed problem with "ticker" mode in GDI graphics manager (Windows XP).
  5. CBCGPURLLinkButton: fixed bug with displaying control on the "aero" background.
  6. CBCGPGridCtrl::OnHeaderColumnRClick is always called now when user clicks a grid header by the mouse right button.
  7. Fixed memory leak in CBCGPGridCtrl::DoSetSelection (it was in case of multiple selection),
  8. CBCGPGridCtrl::ShowDragInsertMarker works correctly now when user drop some content into the empty grid.
Version 24.0. Released 03/05/2015
New features
  1. 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.

  2. 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

  3. 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. CBCGPStaticLayout::RemoveAnchor method was added.
    4. New method CBCGPCheckListBox::EnableCheck allows to enable/disable check box of the specific checked list item.
    5. New New method CBCGPPropertyPage::SetPageIcon(HICON hIcon) assigns the icon to specific property page.
    6. CBCGPSwitchImpl: added disable control support.
    7. CBCGPWinUITiles: added icons auto-scaling by DPI. Call new method CBCGPWinUITiles::EnableIconsScaleByDPI to enable/disable this feature.
    8. CBCGPGridDateTimeItem now supports seconds (CBCGPDateTimeCtrl::DTM_SECONDS flag is used).
    9. Fixed bug with building library with Windows XP platform toolset: you've to add now BCGSUITE_WIN_XP_TOOLSET definition to your project C++ settings.

  4. Examples and samples:
    1. Added new sample EditorMarkers (see screenshot): illustrates how to add custom markers and colored areas to the edit control.
    2. BCGPCalendarDemo: demonstrates monthly view week bar.
    3. BCGPChartExample: demonstrates new color themes and nested doughnut chart.
    4. ListBoxDemo: shows how to add color bars and disable check boxes./li>
    5. WinUITilesDemo: shows icons auto-scaling.
  1. CBCGPButton: fixed check box/radio button rendering bug in high DPI mode.
  2. CBCGPButton::get_accState returns correct value in case of 3-state check box.
  3. Chart: the chart title position is correctly calculated according to the title format text alignment.
  4. Chart: the legend located in front of the chart is located over the chart objects and table now.
  5. CBCGPEditCtrl: fixed bug with the remaining selection redrawing after block expanding/collapsing.
  6. Gauge: fixed bug with setting scale value outside the range in the gauge interactive mode.
  7. Fixed some bugs in owner-draw CBCGPListBox without LBS_HASSTRINGS style.
  8. Grid control: fixed bug with drawing filter bar.
  9. 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. 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.
  3. Miscellaneous
    1. CBCGPMenuButton: implemented popup dialogs support (see screenshot). The following new methods were added to CBCGPMenuButton class:
      • EnablePopupDialog
      • OnBeforeShowPopupDlg
      • ClosePopupDlg
    2. CBCGPWinUITiles: added ability to specify custom text formats. The following new methods were added:
      • SetCaptionTextFormat
      • SetGroupCaptionTextFormat
      • SetCaptionButtonTextFormat
      • SetHeaderTextFormat
      • SetNameTextFormat
    3. CBCGPListBox: implemented item tooltip support. SetItemToolTip, GetItemToolTip and GetItemToolTipDescription methods were added to this class. ListBoxDemo sample application demonstrates this new feature.
    4. Added a new optional parameter 'LPCTSTR lpszInitialFolder' to CBCGPEdit::EnableFileBrowseButton method.
    5. New attribute 'CBCGPGraphicsManagerGDI::m_bExtendedMappingMode' allows working with non-MM_TEXT mapping mode.
    6. CBCGPPlannerManagerCtrl::SetImages has a new optional parameter 'BOOL bAutoScale'. Set it to TRUE to scale image in the high DPI mode.
    7. CBCGPSliderCtrl::SetSelectionColor specifies the slider control selection color.
    8. CBCGPStatic control supports SS_ENDELLIPSIS, SS_PATHELLIPSIS and SS_WORDELLIPSIS styles now.
    9. CBCGPBaseVisualObject has a new virtual method 'OnAnimationFinished'.
  4. Examples and samples:
    1. BCGPChartExample: added multiple pie charts demonstration.
    2. BCGPGaugesDemo: added static gauge in "ticker" mode and radial menu animation demonstrations.
    3. ListBoxDemo: shows how to add custom tooltip to the list box items.
  1. Fixed bug in CBCGPChartLongSeries::OnCalcScreenPoints when scatter mode is on.
  2. CBCGPDateTimeCtrl doesn't change the time when user selects a new date from the drop-down calendar.
  3. CBCGPExplorerToolBar correctly scales navigation icons in high DPI mode.
  4. Fixed bug in rendering right-aligned text in CBCGPListBox with LBS_USETABSTOPS style.
  5. CBCGPMessageBox: the check box has the same font as message box.
  6. Grid control: fixed Filter Bar drawing problems.
  7. Grid control: disabled selection highlighting of header items in whole row selection mode.
  8. Grid control: removed unnecessary horizontal scrolling on mouse click in whole row selection mode.
  9. 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 'ScaleByDPI' scaling helpers to CBCGPGlobalUtils class.
      2. CBCGPListBox::SetImageList has a new optional parameter 'BOOL bAutoScale = FALSE'. Set it to TRUE to auto-scale list box images.
      3. Improved high DPI support in the following controls:
        • Analog clock
        • Breadcrumb control
        • Date/time picker
        • Drop-down toolbar button
        • Duration control
        • Advanced edit control
        • Grid control
        • Radial Menu
        • Rotation Control
    2. CBCGPVisualManager class has the following new methods:
      • OnDrawProgressMarqueeDot: draws progress bar marquee dot.
      • GetProgressMarqueeColor: gets progress bar marquee fill color.
    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. 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).
  5. 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.
  6. 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.
  7. 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
  8. 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. CBCGPButton: implemented support of images used in control pressed state. CBCGPButton::SetImage and CBCGPButton::SetCheckedImage methods have a new optional parameter: IconPressed.
    3. CBCGPCalendar: added custom color theme support. SetCustomColors, GetColors and IsCustomColors methods were added to this class.
    4. CBCGPCircularGaugeImpl: improved algorithm of drawing tick mark labels (see screenshot).
    5. 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.
    6. Implemented ability to customize edge size in brush 'BCGP_GRADIENT_BEVEL' gradient type: CBCGPBrush has SetBevelSize/GetBevelSize new attribute.
    7. CBCGPEditCtrl::SetLineNumbersMargin has a new, optional parameter 'int nExtraMarginWidth = 0'. You can specify  a text position inside line numbers area.
    8. Method CBCGPEditCtrl::DrawColorLine is virtual now.
    9. Method CBCGPStatic::DoPaint method is virtual now.
  9. 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.
  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. Diagram: fixed bug with wrong anchors of the diagram connectors.
  6. CBCGPBaseVisualCtrl: fixed info tip positioning bug.
  7. CBCGPBaseVisualCtrl::OnNcPaint: the container scroll bars are correctly rendered now under some legacy OSs such as Window XP.
  8. CBCGPBaseVisualObject::Redraw: fixed bug with displaying controls in the scrolled container.
Version 23.0. Released 05/21/2014
New features
  1. Implemented Digital Dashboards support (see screenshot). The following new and updated product features provide easy and efficient way to create fully-functional interactive digital dashboards:
    • Visual Designer: added Chart, Grid, Edit box and container scroll bars support (see screenshot).
    • Added new class CBCGPWndHostVisualObject. This is a base class of any custom windows hosted inside the visual container.
    • 2 new classes CBCGPGridVisualObject and CBCGPEditVisualObject (both derived from CBCGPWndHostVisualObject) provide a simple way to add grid and edit controls to the visual container.
    • CBCGPVisualContainer changes:
      1. EnableScrollBars has a new optional parameter 'BCGP_VISUAL_SCROLLBAR_STYLE style = CBCGPVisualScrollBar::BCGP_VISUAL_SCROLLBAR_FLAT'
      2. New method EnableScalingByMouseWheel allows scaling the container content using the mouse wheel. A new registered message BCGM_CONTAINER_SCALE_CHANGED will be sent to container owner window when user scales the container.
      3. New virtual methods OnAfterCreateWnd and OnBeforeDestroyWnd were added.

    Please run a new example BCGPDigitalDashboard to see these features in action.

  2. Grid Control.
    1. Implemented Grid scaling (see screenshot). The following new methods and notifications were added to CBCGPGridCtrl class:
      1. SetScalingRange: specify the grid scaling range
      2. GetMinScale and GetMaxScale: obtain the grid scaling range
      3. SetScale: set the current grid scale
      4. GetScale: get the grid scale
      5. BCGM_GRID_SCALE_CHANGED: notify owner about grid scale changing
    2. Popup dialogs support (see screenshot). A new class CBCGPGridPopupDlgItem provides a way to show a popup dialog associated with the grid cell.
    3. Added Grid scrollbars custom colors support (see screenshot).

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

  3. Edit box.
    1. Added popup dialogs support (see screenshot). Please call a new method 'CBCGPEdit::EnablePopupDialog' to setup the "popup dialog" mode. A new virtual function 'CBCGPEdit::ClosePopupDlg' allows to set edit text from the popup dialog. Please take a look at EditBoxDemo sample to see this feature in action.
    2. Custom color themes (see screenshot). The following new methods were added to CBCGPEdit class:
      • SetColorTheme: change edit box color theme
      • GetColorTheme: get edit box color theme

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

    3. CBCGPEdit::EnableFolderBrowseButton has a new optional parameter 'ulFlags = BIF_RETURNONLYFSDIRS'. You can change this flag to customize the browse for folder dialog appearance and behavior by specifying various flags such as BIF_USENEWUI or BIF_BROWSEFORPRINTER.
  4. 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.
  5. Miscellaneous.
    1. CBCGPWinUITiles: implemented scrollbar style support - new methods SetScrollBarStyle/GetScrollBarStyle were added.
    2. Diagram: added diagram shape parts support. CBCGPDiagramVisualObject has a new enumerator 'Parts' and 3 new methods: HitTestPart, GetPartRect and GetPartTextData.
    3. Added custom font support to CBCGPCalendar window.
    4. Added font scaling support to CBCGPTextFormat.
    5. Added ability to specify the group text color: CBCGPGroup has a new public member 'm_clrText'.
    6. New virtual method CBCGPPropertySheet::OnDrawPageIcon allows to customize the property page icon appearance.
    7. CBCGPScrollBar: added custom color theme support. Please call a new method 'SetColorTheme' to specify your custom color theme and 'GetColorTheme' to obtain the theme.
    8. CBCGPSliderCtrl: implemented TBS_ENABLESELRANGE and TBS_NOTHUMB styles support.
  6. Examples and Samples:
    1. New example BCGPDigitalDashboard (see screenshot) illustrates how to create interactive digital dashboards with Grids, Charts, Gauges and other controls.
    2. New sample GesturesDemo (see screenshot) demonstrates how to add Windows gesture support to CWnd-derived class.
    3. BCGPChartExample demonstrates new Info Tip object and how to use external scroll bars along with the chart (CChartHugeDataView class).
    4. BCGPGridExample illustrates grid popup dialogs, grid scaling and subscript/superscript grid items.
    5. EditBoxDemo sample illustrates edit box custom colors and popup dialogs.
    6. WinUITilesDemo: added scrollbar custom color theme demonstration.
  1. Solved some minor 64 bit-compatibility problems.
  2. CBCGPCircularGaugeImpl and CBCGPLinearGaugeImpl: fixed bug with sub-gauge reposition when the parent container was scrolled.
  3.  CBCGPGraphicsManagerD2D::BeginDraw: solved problem with D2D initialization on some graphics cards.
  4. CBCGPListBox: fixed bug with description area height calculation.
  5. CBCGPPropertySheet: fixed bug with adding new pages at run-time when window has PropSheetLook_Tabs type and Visual Manager style was specified.
  6. CBCGPSliderCtrl correctly handles TBM_SETTICFREQ message now.
  7. CBCGPPlannerViewDay: fixed scrolling using ‘Up’ and ‘Down’ keys.
  8. Chart: fixed hit-testing bug in the parent container scrolling mode.
  9. Grid: fixed bug in multi-line header rendering.
  10. Grid: fixed bug with multiple selection of several columns.
  11. Diagram: improved drawing of diagram labels.
  12. Diagram: fixed label in-place editing bug.
  13. Diagram: fixed connection ports drawing bug.
  14. Diagram: fixed bug with a scaled image rendering.
Version 22.1. Released 01/15/2014
New features
  1. 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.

  2. 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.
  3. 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
  4. Miscellaneous:
    1. Property Sheet: new method CBCGPPropertySheet::RenamePage allows to modify a specific page name at run-time.
    2. Gantt Chart: added Visual Manager-style support (see screenshot). New method 'CBCGPGanttControl::SetVisualManagerStyle' allows to specify the visual manager theme.
    3. 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.
    4. List box control supports now LBS_USETABSTOPS control style.
    5. Graphics Manager: new method CBCGPTextFormat:: SetFontStyle allows to modify font style (e.g., Italic) at run-time.
    6. Date/Time picker and Calendar controls: added mouse wheel handling.
  5. Examples and Samples:
    1. 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).
    2. BCGPChartExample demonstrates how to create Chart Data Tables, smaller Pie slices grouping and new visual themes.
    3. BCGPGanttDemo example demonstrates Gantt Chart in the Visual Manager theme.
  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. CBCGPPropertyPage correctly processes controls layout if property sheet header has been specified and property sheet window is resizable.
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. Frames, dialogs and property sheets:
    • 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.

  4. 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.
  5. 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 returns now 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.
  6. 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 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 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. CBCGPSliderCtrl supports tick marks now (see screenshot)
  7. 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,
  8. Miscellaneous:
    1. New class CBCGPGestureBase simplifies adding touch/gesture support to any CWnd-derived class.
    2. CBCGPTagCloud control has keyboard navigation support now.
    3. 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.
    4. Gauges: implemented Microsoft Active Accessibility support.
    5. 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.
  9. Examples and Samples:
    1. All Examples and Samples are in UNICODE now (VS 2010 or higher).
    2. New sample application EditBoxDemo shows how to create edit box control in the various modes (see screenshot).
    3. ResizableForm sample illustrates how to create property sheet control in the FormView (see screenshot).
  1. Added WM_PRINTCLIENT message handling to the most of our controls. This fixes bug with control rendering in the window animation and preview.
  2. CBCGPHeaderCtrl correctly supports HDS_FILTERBAR style.
  3. CBCGPGroup control correctly processes WM_GETFONT and WM_SETFONT messages.
  4. CBCGPGanttChart control correctly processes WM_GETFONT and WM_SETFONT messages.
  5. Fixed COleDataSource releasing bug: all COleDataSource objects are created on the heap and released using InternalRelease method.
  6. CBCGPButton: fixed bug with a text default alignment in case of checkbox/radio button with BS_PUSHLIKE control style.
  7. Chart control: the chart doesn't show data labels for the empty data points now.
  8. CBCGPPropertySheetCtrl is correctly supports controls layout now.
  9. CBCGPPropertySheet: page navigation listbox control (used in PropSheetLook_List mode) is created with the vertical scroll bar now.
  10. 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. 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. 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.
  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. Pyramid Chart: fixed problem with incorrect gap calculation in the Chart print mode.
  4. Bubble Chart: the data labels are correctly positioned now in the Chart print mode.
  5. Property Sheet: fixed bug with height of the property sheet in 'PropSheetLook_Pointer' mode.
  6. Property Sheet: fixed problem in Wizard 97 mode (if visual theme is activated).
  7. Radial Menu: fixed rendering bug in Popup Mode (caused by IE10 update)
  8. Edit control: fixed bug with loading UNICODE files.
  9. Edit control: CBCGPBaseIntelliSenseLB::UpdateColors doesn't change the global colors now.
  10. Edit control: BCGP_EDIT_SYNTAX_COLOR structure is exported now.
  11. Tree control: fixed some control rendering bugs under specific Visual Managers.
  12. Grid control: grid color item with a default (without value) color is rendered correctly now.
  13. Grid control: fixed bug with Filter Bar localization.
  14. Grid control: fixed bug with serialization of CBCGPGridRow::m_dwData and CBCGPGridItem::m_dwData members that caused error in 64-bit.
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. 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.
  3. 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.
  4. 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.
  5. 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 clas: 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.
  6. 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).
  7. 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.
  8. 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.
  9. 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. 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.
  10. Changes in examples and samples:
    1. BCGPChartExample: added chart shadows demonstration
    2. 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).
    3. WinUITilesDemo: demonstrates new WinUI Tiles features such as views associated with tile, caption buttons and group Captions (see screenshot).
  1. CBCGPGraphicsManagerD2D: WIC Imaging Factory is initialized properly now if the latest Windows SDK is used along with VS 2012 (Windows 7 and Vista only).
  2. A skinned check box/radio button doesn't catch VK_RETURN key now.
  3. Fixed problem with rendering CBCGPProgressCtrl created with PBS_VERTICAL style.
  4. 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.
  5. Fixed problem with CBCGPEdit rendering when control doesn't have WS_BORDER style.
  6. CBCGPPropertySheet preserves the selected tab/list item if OnKillActive method of the active page has returned FALSE.
  7. Chart Control: fixed bug with positioning of the 3D sides upon specific series gap values.
  8. CBCGPRadialMenuObject is correctly rendered now when display high contrast mode is active.
  9. CBCGPToolbarDateTimeCtrl class is DPI-aware now.
  10. 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 and samples 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. According to Microsoft request, the name "Metro UI" is not legal anymore, so we made the following changes in the product API:
    2. CBCGPMetroUITile -> CBCGPWinUITile
    5. CBCGPMetroUITiles -> CBCGPWinUITiles

    In addition, MetroUITilesDemo was renamed to WinUITilesDemo.

    IMPORTANT: if you're using Metro UI Tiles component in your application, please make all required renames in the code.

    Other WinUI Tiles changes:
    1. WinUITilesDemo demonstrates now how to create live tiles with Chart control and Circular Gauge (see screenshot).
    2. Added caption support to CBCGPWinUITiles class (see screenshot). The following methods were added:
      • SetCaption
      • GetCaption
      • SetCaptionForegroundColor
      • GetCaptionForegroundColor
      • OnDrawCaption

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

  4. 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).
  5. 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
  6. 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.
  7. 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).
  8. Miscellaneous changes:
    1. CBCGPPropertySheet: implemented tabs scrolling support in PropSheetLook_Tabs mode: EnableTabsScrolling/ IsTabsScrollingEnabled methods were added.
    2. 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.
  1. Resolved flickering upon tab switching in CBCGPPropertySheet
  2. Fixed bug with displaying skinned disabled edit control.
  3. Resolved problem with drawing some gauges such as text or digital indicators after container scrolling.
  4. Grid control: if EnableFilterBar method was called more than once, a memory leak was occurred.
  5. Grid control: improved mouse wheel scrolling behavior.
  6. Grid control: fixed drawing bug of checkbox item in some visual themes.
  7. Grid control: fixed drawing bug of expand box in HDPI mode.
  8. CBCGPMessageBox: fixed bug with closing message box when embedded check box is clicked.
  9. Diagram control: fixed scaling bug.
  10. Diagram control: fixed bug with a drawing of multi-point connectors.
  11. Chart control: CBCGPChartAxis::ValueFromPoint returns a correct value now when the logarithmic scaling is used.
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. 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.

  4. 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.
  5. 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.
  6. 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.
  7. 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.
    • New class CBCGPDiagramView implements a view with embedded diagram control.
    • 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'.
  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. CBCGPButton::UncheckRadioButtonsInGroup doesn't check invisible button now.
  12. Radial menu: fixed icon drawing bug. In some cases the icon was drawn "blurred".
  13. CBCGPEdit: appearance of the control in the Visual Manager mode has been improved.
  14. Fixed some bugs with re-loading recent size and position of the dialogs and property sheets.
  15. Fixed bug with nested redrawing in CBCGPCalendar::RecalcLayout method.
  16. Diagram: fixed bug with connectors positioning when the diagram scrolling/zooming was performed.
  17. 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. The library is fully tested on Windows 8 Consumer Preview operating system.
  3. 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).
  4. Diagram Control implements new and updates existing features:
    • Added zoom support for diagram, all diagram shapes and connectors support proportional scaling.
    • Improved features for runtime editing of diagram. See new DiagramEditor sample (see screenshot).
    • Implemented copy/paste support for the diagram editors.
    • Added support for drag and drop connectors and shapes in edit mode.
    • Added shapes coloring. The following new shapes properties were added to CBCGPDiagramVisualObject class:
      • GetFillBrush/SetFillBrush
      • GetOutlineBrush/SetOutlineBrush
      • GetShadowBrush/SetShadowBrush
    • Added connectors and connector arrows coloring. The following new properties were added to CBCGPDiagramConnector class:
      • GetOutlineBrush/SetOutlineBrush
      • GetArrowOutlineBrush/SetArrowOutlineBrush
      • GetArrowFillBrush/SetArrowFillBrush
    • Implemented new shape types:
      • Image item - CBCGPDiagramImageObject class
      • Table shape - CBCGPDiagramTableShape class.
    • A new class CBCGPDiagramCustomShape implements custom shapes support.
    • Helper diagram's entity "ConnectionPoints" was renamed to "ConnectionPorts".
    • The method CBCGPDiagramVisualObject::SetTextValue was renamed to CBCGPDiagramVisualObject::SetTextData for consistence.

      You can see the new features in action in the new sample DiagramEditor and modified example BCGPDiagramDemo.
  5. 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.
  6. 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.

  7. 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.
  8. 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.
  9. 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
  10. Visual Designer
    • The designer supports now both gauges and diagrams (see screenshot)
    • Implemented multi-selection and element alignment operations.
  11. 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.
  12. 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.
  13. Miscellaneous additions
    • CBCGPDrawManager line, arc and ellipse drawing methods have a new optional parameter: int nPenStyle = PS_SOLID.
    • CBCGPProgressCtrl supports PBS_MARQUEE style now.
    • Added scaling support to CBCGPTagCloud control.
  14. 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.
    • The following new samples were added:
    1. DiagramEditor demonstrates how to edit the Diagram Control.
    2. TreeMapDemo: demonstrates new TreeMap control.
  1. Chart control: when an axis works in "fixed interval mode" the interval size is not adjusted anymore to fit the plot area size. Instead, the last interval can be truncated and displayed partially.
  2. Chart control: fixed problem with label interlacing when axis becomes too small.
  3. Pie chart correctly displays very small slices.
  4. Chart control: fixed printing (and scaling) issues with axes in "fixed interval" mode.
  5. Chart control: fixed printing issues with legend size.
  6. Chart control: split axes (when you split an axis to two axes using CBCGPChartAxis::Split) take correct size.
  7. Chart control: fixed labeling and zooming issues with date-time axes.
  8. Chart control: fixed layout of radar chart.
  9. Grid control: fixed bug with alignment of merged cells.
  10. Grid control: mouse click was disabled for a grid check item (CBCGPGridCheckItem) in read-only mode
  11. Grid control: fixed bug with selection border.
  12. Property Sheet: fixed bug with redrawing non-client area when the property sheet is skinned and a developer changes the currently activated visual manager or DWM composition is being changed.
  13. Fixed drawing bug in CBCGPListBox when control has a horizontal extent.
  14. CBCGPButton doesn't draw unnecessary focus rectangle in some visual managers now.
  15. CBCGPComboBox correctly draws drop-down button in all Windows themes now.
  16. CBCGPGraphicsManagerGDI draws lines, arcs and ellipses with a pen style different from PS_SOLID using anti-aliasing methods.
Version 17.0. Released 01/23/2012
New features
  1. Added the long awaited Diagram Control (see screenshot), which implements the following features:
    • Ability to add unlimited number of diagram shapes and connectors.
    • Various predefined diagram blocks, including circles, triangles, boxes, rounded boxes, parallelograms, trapezoids, stars and clouds.
    • Table diagram block.
    • Text labels inside diagram blocks.
    • Smart straight and curved diagram connectors with 5 types of customizable arrows.
    • Interactive diagram editing.
    • Ability to save and load diagram to/from XML.
    • Copy diagram image to the Clipboard.
    • Save diagram image to a file.
    • Please run the new BCGPDiagramDemo example to see the new control in action.
  2. Chart Control implements new and updates existing features:
    • Axis scale breaks (see screenshot). Call CBCGPChartAxis::EnableScaleBreaks to enable this feature for an axis. Scale breaks can be generated automatically or added manually. See the updated BCGPChartExample | Advanced Features | Scale Breaks for more info.
    • Added new chart category - Histogram. Use the new BCGPChartHistogram category and CBCGPChartHistogramSeries class to create series of this type.
    • Implemented two new technical indicators for Stock charts (see screenshot): Bollinger Bands and MACD. Use CBCGPChartBollingerBandsFormula and CBCGPChartMACDFormula classes to add these indicators to Stock charts.
    • Stock charts are optimized to handle very large data. Call CBCGPChartStockSeries::AddData and pass a CArray of CBCGPChartStockData objects to quickly initialize a stock series with market data.
    • Now stock series are working in "index mode" mode by default. It means that data points are accessed by index, but X axis displays labels according to date stored in the X component of data point.
      Important note. Do not call CBCGPChartAxisX::SetFixedDisplayRange with date/time values, use data point indexes instead.
    • Now you can create virtual stock series by overriding only three methods: IsOptimizedLongDataMode (should return TRUE), GetDataPointCount (should return the total number of data points in a stock series) and GetStockDataAt, which should return the data obtained from external source.
    • Line, Area, Column, Bar and Histogram series can handle very large volumes by trading off the ability to customize individual data point properties. Call CBCGPChartSeries::AddDataPointsOptimized or CBCGPChartVisualObject::AddDataPointsOptimized with array of double values to add a batch of data points. Take a look at BCGPChartDemo | Large Volume Charts | Huge Data to see this feature in action.
    • CBCGPChartAdvancedFormula output series now takes advantage of "optimized long data" feature, which allows to increate performance and reduce memory consumption. Set CBCGPChartAdvancedFormula::m_bUseLongData to FALSE before creation of output series to use "regular" data points.
    • Added support for tooltips (see screenshot). Call CBCGPChartCtrl::EanbleTooltip to enable tooltips for a chart control. You can override CBCGPChartSeries::OnGetDataPointTooltip to customize tooltip text for a specific data point. You can override CBCGPChartVisualObject::OnGetToolTip to customize a tooltip displayed at specified client coordinates.
    • You can customize series fill opacity by calling BCGPChartFormatSeries::SetSeriesFillOpacity.
    • Added new notifications about axis zoom and scroll actions: chart control's owners will receive BCGM_ON_CHART_AXIS_ZOOMED and BCGM_ON_CHART_AXIS_SCROLLED messages. Also you can override OnAxisZoomed and OnAxisScrolled overrides in CBCGPChartVisualObject.
    • CBCGPChartAxis has two new members m_szMaxFixedLabelSize and m_strMaxDisplayedLabel. The first member allows to specify maximal axis label size (in pixels), which won't be overridden by internal calculations. The second allows to specify a label whose size will be used as maximal label size.
    • Output series type encapsulated in CBCGPChartAdvancedFormula can be customized by overriding of GetOutputSeriesType and GetOutputSeriesCategory methods.
    • CBCGPChartObject has a new coordinate mode CM_PIXEL_FIXED_SIZE. Now you can add objects of fixed size to the diagram area and specify object size and position in pixels.  
    • CBCGPChartLongSeries has a new method GetNearestScreenPoint, which calculates position for interactive markers.
    • Chart View correctly handles Windows 7 task bar interaction.
    • Pan mode correctly scrolls different series displayed on different axes.
  3. Added a new Tag Cloud control (see screenshot). This control is a visual representation for text data ("tags") and the importance of each tag is shown with font size or color. The control implements the following features:
    • Unlimited number of tags.
    • Alphabetical sorting.
    • Sorting by value.
    • Customizable text color.
    • Customizable text format.
    • Tooltip support.
  4. Visual Designer for Gauges (see screenshot)
    • Now you can create top-quality digital dashboards using the new WYSIWYG design tool in minutes!
    • Arrange gauges on the design surface and change their properties.
    • Save your dashboard to XML and load it in a C++ application.
    • See the updated BCGPGaugesDemo to learn how to integrate designed dashboards with your application.
  5. Graphics Manager
    • CBCGPGeometry supports 2 filling methods now: alternate or winding. GetFillMode/SetFillMode methods were added to this class.
    • New static method CBCGPColor::CreatePalette creates palette from the colors array.
    • CBCGPColor::GetRGBArray returns colors array in order suitable for displaying in 14-columns grid (see screenshot).
    • CBCGPBrush has '==' operator now.
    • Added CBCGPBrush::SetOpacity method.
    • CBCGPTextFormat: added character set support. This class has a new constructor and GetCharSet and CharSetToLocale new methods.
    • CBCGPGraphicsManager::CleanResources has new, optional parameter 'BOOL bDetach'. Setting this parameter to TRUE allows to detach graphics resources from the manager.
    • Added content scaling support: CBCGPGraphicsManager has new methods: SetScale/GetScale
  6. New controls and dialogs
    • CBCGPEditBrushDlg (see screenshot) allows to edit CBCGPBrush properties.
    • Added Line style combobox control - CBCGPLineStyleComboBox
    • Added Brush button - CBCGPBrushButton
    • CBCGPTextFormatDlg (see screenshot) allows to edit CBCGPTextFormat properties.
  7. Gauges
    • CBCGPColorIndicatorImpl has new constructor where you can specify background brush.
    • CBCGPTextGaugeImpl has new constructor where you can specify background brush.
    • CBCGPBaseVisualObject has new virtual method 'OnMouseDblClick'
    • CBCGPVisualContainer has new methods 'GetByID' and 'LoadFromFile'
  8. Grid control
    • New method CBCGPGridCtrl::EnableGridLines is used to disable grid lines in the grid control.
    • New method CBCGPGridCheckItem::SetLabel allows to draw text label inside checkbox-item.
  9. Miscellaneous additions
    • CBCGPMemDC has new, optional parameter 'dblScale'. You can create the memory DC with ability to scale it.
    • Improved CBCGPButton's focus rectangle appearance when control is located on Aero ("glass") area.
    • CBCGPDrawManager has new method 'DrawFocusRect' which allows to draw focus rectangle on Aero.
    • CBCGPInplaceToolTipCtrl utilizes Visual Manager tooltip drawing now.
    • Added pin, description and separator support for CBCGPListBox. The following new methods were added to CBCGPListBox class:
      1. EnablePins
      2. HasPins
      3. EnableItemDescription
      4. HasItemDescriptions
      5. SetItemDescription
      6. SetItemPinned
      7. IsItemPinned
      8. ResetPins
      9. AddSeparator
      10. IsSeparatorItem
      11. OnClickPin
      12. OnClickItem
      13. OnReturnKey
  10. Examples and samples
    • BCGPChartExample has the following additions:
      1. "Advanced Features | Scale Breaks" illustrates the new "scale breaks" feature.
      2. "Large Volume Charts | Huge Data" demonstrates the performance of "optimized long data mode".
      3. "Large Volume Charts | Huge Average Data" shows how to add interactive markers to BCGPChartLongData chart.
      4. "Large Volume Charts | Virtual Chart" describes the technique required to create virtual charts, where the data is taken from an external source.
      5. "Stock Charts"  demonstrate new technical indicators.
    • BCGPGaugesDemo shows how load dashboard from the Visual Designer data file.
    • BCGPGridExample show how to create grid control with watermark image (see screenshot).
    • The following new samples were added:
    1. BCGPDiagramDemo: demonstrates how to use new Diagram Control.
    2. PropertyGridMDIDemo: demonstrates new property grid features and how to use the property grid in MDI application.
    3. TagCloudDemo: demonstrates new Tag Cloud control.


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

    All product functionalities were thoroughly tested under Windows 8 preview. Few minor bugs addressed to Windows 8 have been fixed and we confirm that our product is ready for use in this new operating system.
  2. Visual Studio 2011 Developer Preview support.

    For your convenience we added project/solution files for Visual Studio 2011, so if you begin porting your projects to the new Visual Studio, our library is ready for this. Also, we've updated our Integration Wizard - now it includes support VS 2011. Please note that Visual Studio 2011 support currently is available for the retail version only.

  3. Chart Control implements new and updates existing features:
    • Enhanced custom axis support. Now you can add a custom axis using CBCGPChartAxis::Split method at the top or at the bottom of the axis being split (see a new optional parameter bCustomAxisAtTop).
    • Added a new method CBCGPChartVisualObject::RemoveCustomAxis.
    • Added a new axis cross type CBCGPChartAxis::CT_FIXED_DEFAULT_POS, which makes an axis to be fixed at its default position at the edge of plot area.
    • Created infrastructure for custom financial indicators:
      • A new CBCGPChartAdvancedFormula class can be used as a base class for custom indicators.
      • CBCGPChartSeries::GetDataBuffer allows to store intermediate calculations for each data point in a series. You can allocate unlimited number of buffers.
    • Implemented several technical indicators in the following new classes:
      • CBCGPChartMAFormula implements moving averages (simple, exponential, smoothed, linear weighted)
      • CBCGPChartStochasticFormula implements Stochastic Oscillator
      • CBCGPChartRSIFormula implements RSI indicator (smoothed, exponential, simple).

        Please take a look at CBCGPChartExample | Stock Chart to see the new indicators and custom axis support in action (see screenshot).
    • Added "Manhattan Stacked Column" chart type (see screenshot). To enable this kind of charts you have to use the new CBCGPChartDiagram3D::SetExplicitGrouping method.
    • CBCGPChartExample | Advanced Features | Custom Axis illustrates how to add a standalone custom axis (see screenshot)
  4. Grid Control implements the following new features:
    • The following methods are virtual now:
      • CBCGPGridCtrl::StartSelectItems
      • CBCGPGridCtrl::SelectItems
      • CBCGPGridCtrl::StopSelectItems
    • Added a new optional parameter bUpdate to CBCGPGridCtrl::EnableFilterBar method
  5. Graphics Manager
    • CBCGPGraphicsManager::CreateInstance has a new optional parameter: CBCGPGraphicsManagerParams* pParams. Using this new parameter you can specify the target DPI, alpha mode and rendering type
  1. CBCGPChartAxis::Split correctly splits multiple axes.
  2. Fixed problem with appearance of 32 bit images in CBCGPBaseVisualCtrl::OnDrawLayeredPopup under Windows 8.
  3. Fixed problem with incorrect circular gauge shape in specific scale angles.
  4. Fixed problem with Grid Filter bar drawing in "freeze columns" mode.
  5. Now CBCGPButton::m_clrFace is used when a button has a Visual Manager theme.

Version 16.0. Released 07/26/2011
New features
  1. Chart Control has been extended with the following new 3D chart types:

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

  2. Grid Control implements the following new features:
    • Multi-line text support for grid items (see screenshot): word wrapping, understanding "\r\n" line breaks, multiline in-place editor, horizontal and vertical align, printing. Please take a look at BCGPGridExample to see this feature in action.
    • Added ability to subclass the default grid header by overriding the virtual GetColumnsInfo() function.
      You can learn how to extended a grid header with two header lines and merged header items in BCGPGridExample, "Multi-Line Header" tab.
    • Added ability to animate a grid item content - see BCGPGridExample, "Cell Types" tab.
  3. Gauge components have the following new interactive controls:
    • Knob (see screenshot)
    • Radial menu (see screenshot)
    • Rotation control (see screenshot)
    • Analog clock (see screenshot) (in previous versions this control was implemented in examples code).
    • Added gauges tooltip support.
    • Added interactive gauge support:
      • SetInteractiveMode/IsInteractiveMode methods were added to CBCGPGaugeImpl class.
      • New structure CBCGPGaugeTrackingData contains gauge tracking data such as last tracking message, screen point and current gauge value.
    • CBCGPLinearGaugePointer has the following new styles:

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

  4. Calendar and Planner
    • Added working interval support: CBCGPPlannerManagerCtrl::SetViewHourInterval and CBCGPPlannerManagerCtrl::SetPrintHourInterval method were added.
    • Added ability to customize "Up"/"Down" icons
  5. Graphics Manager
    • CBCGPImage can be initialized from HICON and HBITMAP now
    • Added method CBCGPGraphicsManager::DrawBeveledRectangle
  6. Examples and samples
    • For your convenience, all examples and samples were prepared for Visual Studio 2010. Please open MakeExamplesVS2010.sln solution to build them without conversion in Visual Studio 2010 environment.
    • BCGPChartExample illustrates new 3D charts.
    • BCGPGaugesDemo shows how to create the new knob and radial menu gauges.
  1. Fixed some problems in Chart Control.
  2. Fixed problem with drawing CBCGPBreadcrumb on the DWM aero area.
  3. Fixed problem with drawing CBCGPScrollBar on the DWM aero area.
  4. Fixed memory/resource leak in graphics manager gradient brush initialization.
  5. CBCGPLinearGaugeImpl: fixed some problems with gauge appearance under Windows XP (in GDI mode).
  6. Fixed bug with displaying incorrect value in CBCGPCalculator::UpdateDisplay.
  7. Fixed bug in CBCGPDlgImpl::LoadPlacement/SavePlacement: the dialog location is restored correctly now when the Windows task bar is located on the left or top side.

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

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

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

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

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

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

  4. Grid additions:
    1. Added Find support - the following new methods have been added to the CBCGPGridCtrl class:
      • OpenFindReplaceDlg
      • CloseFindReplaceDlg
      • Find
      • OnPrepareFindString
      • OnTextNotFound
      • OnTextFound

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

    2. Added a new virtual method 'CBCGPGridCtrl::OnAfterInplaceEditCreated which is called right after the in-place edit has been created.
  1. CBCGPGridCheckItem now can print a check mark.
  2. Fixed painting of the right side of the grid header.
  3. Fix in CBCGPGridCtrl::OnLButtonUp for disabled grid items.
  4. Fixed a problem with drawing rotated texts using CBCGPGraphicsManagerGDI.
  5. Fixed problem with drawing dates with year less than 1900 in CBCGPDateTimeCtrl and CBCGPCalendar under VS 2005 and higher.
  6. Fixed some problems in Chart Control.

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

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

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

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

  3. Added D2D support. A new class 'CBCGPGraphicsManagerD2D' implements D2D backend. It exposes various methods for easy access to D2D and DirectWrite interfaces. All graphics primitives like lines, rectangles, ellipses, geometries, arcs, pies, pyramids and texts can be easily drawn with D2D speed and quality using just few lines of code. Also we added a new class 'CBCGPGraphicsManagerGDI', which can be used on OSs that do not support D2D (for example, Windows XP or Windows 2000). The base class CBCGPGraphicsManager automatically creates GDI manager if it detects an older OS (where D2D is not supported).
  4. New Editor language schemes (see screenshot). Outline parser customization was extended. Added new Lexeme::m_dwData, BlockType::m_dwData members. Extended LexemType enumerator.
    BCGPVisualStudioGUIDemo example demonstrates how to implement the following schemes using new mechanism:
    • C++
    • HTML
    • BASIC
    • Pascal
    • C#
    • Assembler
    • XML
    • SQL
  5. Added description to CBCGPButton (see screenshot): CBCGPButton::SetDescription/ CBCGPButton::GetDescription methods have been added.
  6. Grid changes:
    • The class CBCGPGridItemID has new state {m_nRow = -2, m_nColumn = -2} which indicates the selection of the whole content. New methods: CBCGPGridItemID::SetAll, CBCGPGridItemID::IsAll. CBCGPGridItemID::IsNull was modified.
    • CBCGPGridItem::Init and CBCGPGridItem::SetFlags are now virtual.
    • Added CBCGPGridCtrl::IsColumnBeingResized function.
    • Added option to disable quick sorting. To return to the previous ("bubble") sorting implementation please use new CBCGPGridCtrl::m_bUseQuickSort member.
    • Added CBCGPGridCtrl::NormalizeSelectionList, CBCGPGridCtrl::RemoveSelectedRows, CBCGPGridCtrl::Delete, CBCGPGridCtrl::IsDeleteEnabled functions.
    • Added mechanism to customize colors alternating. Please override virtual BOOL OnAlternateColor (const CBCGPGridItemID& id) to specify if an item has odd or even color.
    • Improved performance of the grid with many columns. Changed implementation of CBCGPGridColumnsInfo class, changed the internal column's container.
  7. Changes in Examples and Samples:
    • Added a new example BCGPChartExample that demonstrates Chart features.
    • Added a new example BCGPGaugesDemo that demonstrates Gauges features.
    • BCGPGridExample has been updated to illustrate how to create a Chart within a merged cell.
  1. CBCGPDateTimeCtrl doesn't show drop-down calendar if control is disabled.
  2. CBCGPGridCtrl: fixed some problems with mouse wheel.
  3. CBCGPGridCtrl: Changed implementation of the "merged cells" feature.
  4. CBCGPGridCtrl: fixed print pagination bug, the bug appeared if a column width was larger than a print page.
  5. Fixed CBCGPEditCtrl::LoadXMLSettingsFromBuffer. "EscapeSequences" tag of XML-settings file works now. "Start" and "End" tags can contain delimiters now.
Version 12.0. Released 04/14/2010
New features
  1. The product is fully compatible with Visual Studio 2010.
  2. Added a new class CBCGPVisualManagerVS2010, which implements Microsoft Visual Studio 2010 look (see screenshot). In addition, a new class CBCGPVisualManagerVS2010 (Visual Studio 2008 only) implements Visual Studio 2008 look. You can run BCGPVisualStudioGUIDemo example to examine this new fresh look!
  3. Implemented Resizable Dialogs support (see screenshot1 and screenshot2):
    • Added 2 new classes:
      1. CBCGPControlsLayout: implements the base class for all layout managers.
      2. CBCGPStaticLayout: implements "static" layout management based on anchors.
    • To enable layout support, you've to call EnableLayout/GetLayout methods in the following classes:
      1. CBCGPDialog
      2. CBCGPDialogBar
      3. CBCGPropertyPage
      4. CBCGPFormView

    Please run ResizableForm new sample to see this feature in action. In addition, you can see this feature in the following examples and samples:

    1. BCGPOrganizer: resizable dialog bar.
    2. ToolBoxDemo: resizable form
  4. Added Vista-style Breadcrumb control (see screenshot). Please take a look at new sample BreadcrumbDemo and BCGPMediaPlayer example to see this control in action and learn how to add it to your application. New classes CBCGPBreadcrumb and CBCGPShellBreadcrumb implement this control. The following new methods have been added to CBCGPVisualManager class:
    1. BreadcrumbFillBackground
    2. BreadcrumbDrawItemBackground
    3. BreadcrumbDrawItem
    4. BreadcrumbDrawArrowBackground
    5. BreadcrumbDrawArrow
    6. BreadcrumbDrawLeftArrowBackground
    7. BreadcrumbDrawLeftArrow
  5. Calculator control has been significantly improved:
    1. All calculator buttons are drawn using built-in bitmaps and use visual manager appearance (see screenshot).
    2. Implemented extended commands. Using a new method CBCGPCalculator::SetExtendedCommands developers can add a lot of build-in calculator commands such as idCommandAdvSin, idCommandAdvCos, idCommandAdvTan and others.

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

  6. CBCGPPropertySheet has a new mode: PropSheetLook_AeroWizard (see screenshot). In general, this mode has been designed and implemented for Vista/Windows 7 Aero, but you can use it in any OSs/modes (see screenshot). The glass (aero) area can be combined with a page header - we've added a new optional parameter 'bDrawHeaderOnAeroCaption' to EnablePageHeader method. Please take a look at PropSheetDemo sample to see this mode.
  7. Grid and Report controls changes:
    1. Added option to select items by clicks on grid header: New header flag BCGP_GRID_HEADER_SELECT.
    2. Improved grid printing support. The following new classes were added:
      • CBCGPGridPage class: this class is used by the grid control to store print pages. A print page specifies which area of the grid is printed at the specified page. The grid counts in items in vertical direction. The grid counts in pixels in horizontal direction.
      • CBCGPGridPageInfo class: This class is used by the grid control to store information about the printing range and the currently printing page. It is stored in CBCGPGridCtrl::m_PrintParams::m_pageInfo member and in CPrintInfo::m_lpUserData member of the CPrintInfo object used while printing at the current print session.
    3. Added an option to deselect items. To deselect an item please use SetCurSel with SM_INVERT_SEL flag. New functions were added:
      • CBCGPGridCtrl::EnableInvertSelOnCtrl
      • CBCGPGridCtrl::IsInvertSelOnCtrlEnabled
    4. Changes in header click events: New BCGM_GRID_COLUMN_CLICK message. Added CBCGPGridCtrl::OnHeaderColumnRClick. Modified CBCGPGridCtrl::OnHeaderColumnClick.
    5. Items align support: New CBCGPGridItem::GetAlign function. Item's alignment is specified by CBCGPGridCtrl::SetColumnAlign.
    6. Grid horizontal pagination support. Added CBCGPGridPage::m_nWidth - page width, CBCGPGridPageInfo::m_nPageWidth - width of currently printed page. See CBCGPGridPage class, CBCGPGridPageInfo class.
    7. Drag-and-Drop support (see new "Drag and Drop" tab in BCGPGridExample sample):
      • New message BCGM_GRID_BEGINDRAG.
      • Added methods EnableDragSelection, IsDragSelectionEnabled, EnableDragSelectionBorder, IsDragSelectionBorderEnabled, StartDragItems and HitTestSelectionBorder.
    8. Extended in-place edit customization support (see new "Easy Input" tab in BCGPGridExample sample):
      • New functions OnBeginInplaceEdit, OnEndInplaceEdit, CanBeginInplaceEditOnChar, CanEndInplaceEditOnChar, OnInplaceEditKeyDown, OnInplaceEditSetSel.
      • New BCGPGRID_ITEM_INFO::dwResultCode member. See BCGPGRID_ITEM_INFO struct.
      • New method SetClearInplaceEditOnEnter. Call SetClearInplaceEditOnEnter (FALSE) to disable grid from clearing content of the item on Enter.
    9. Added CBCGPGridCtrl::GoToNextItem method.
    10. CBCGPGridCtrl::EnsureVisible is now virtual.
    11. Added navigation by TAB (Shift+TAB) key.
    12. Added "Ctrl+Z" (Undo) handler for in-place edit of the grid item.
    13. Changes in CBCGPGridCtrl::SetCurSel for SM_SET_ACTIVE_ITEM style.
    14. Grid item with combo-box now supports F4 to open drop-down list.
    15. CBCGPGridItem has a new virtual method: NewInPlaceEdit. Override this method if you need to create your own in-place edit control.
    16. Added new protected function OnGetColumnAutoSize. It allows to customize the column auto-size feature in the CBCGPGridCtrl-derived class.
  8. Editor enhancements:
    1. CBCGPEditCtrl::ExportBuffer has a new optional parameter 'BOOL bForceAnsi'. Setting it to TRUE forces exporting editor's text in ANSI format.
    2. Added new function GetCurLine (CString& strLine).
    3. Added new member m_bEnableCurrentLineCopy. Setting this flag to TRUE allows to copy the current line to the clipboard if there is no selection. It works similar to m_bEnableWholeTextCopy.
  9. Gantt chart enhancements:
    1. CBCGPGanttView: new virtual methods 'OnCreateChart' and 'OnCreateGrid' have been added. Override these methods if you wish to create your own Gantt view panes.
    2. Added new registered messages:
      1. BCGM_GANTT_CONTROL_CREATE_CHART: allows using custom chart control. Sent when the Gantt control creates a chart.
      2. BCGM_GANTT_CONTROL_CREATE_GRID:  allows using custom grid control. Sent when the Gantt control creates a grid.
    3. New virtual method CBCGPGanttChart::QueryRenderer allows to override the Gantt rendering.
  10. Skinned dialogs enhancements and improvements:
    1. Improved appearance of disabled CBCGPStatic control.
    2. CBCGPStatic has a new member: m_clrText. You can set this member to colorize text labels (see SkinnedDialog sample).
    3. Multi-line text is vertically centered now in CBCGPButton control.
    4. Radio button is correctly painted now when BS_AUTO3STATE is not defined.
    5. CBCGPComboBox doesn't "eat" CBN_CLOSEUP and CBN_DROPDOWN notifications: ON_CONTROL_REFLECT_EX is used instead of ON_CONTROL_REFLECT now.
    6. Added support for drawing CBCGPComboBox control with CBS_SIMPLE style.
    7. CBCGPPropertySheet adjusts correctly the window size when the property sheet header is enabled.
    8. Added support for PSM_SETWIZBUTTONS and PSM_SETFINISHTEXT messages in CBCGPPropertySheet
    9. The method 'EnableVisualManagerStyle' (in CBCGPFormView, CBCGPDialog, CBCGPDialogBar and CBCGPPropertyPage classes) has a new optional parameter: plstNonSubclassedItems - the list of IDs that shouldn't be automatically subclassed.
    10. DS_CONTEXTHELP style is not used now in CBCGPropertySheet window.
    11. The check box height is calculated correctly now when CBCGPButton is created in High DPI mode.
  11. Added CBCGPCalendarBar::GetState method - returns the calendar style flags specified in SetState method.
  12. CBCGPProgressDlg::StepIt has a new, optional parameter 'bWaitForMessages'. Set this parameter to FALSE in order to prevent unnecessary message waiting.
  13. Changes in examples and samples:
    • BCGPGridExample: added new visual managers and 2 new tabs: "Drag and Drop" and "Easy Input"
    • BCGPVisualStudioGUIDemo: demonstrates new visual managers: VS 2008 and VS 2010
    • PropSheetDemo: added Aero Wizard demonstration.
    • ResizableForm: new sample, demonstrates how to use a new layout manager along with dialogs, dialog bars, property sheets and form views.
    • SkinnedDialog: added edit box with calculator and text labels with a custom colors.
    • BreadcrumbDemo: new sample, demonstrates breadcrumb navigation control.
  1. CBCGPGroup properly handles WM_SETTEXT message now.
  2. CBCGPCalendar always closes dropped-down month picker when the calendar is being destroyed.
  3. Fixed problem with text alignment in grid columns. CBCGPGridCtrl::SetColumnAlign is working properly now.
  4. Fixed problem with scrolling CBCGPCalendar and CBCGPDateTimeCtrl dates outside the allowed year range (between 100 and 9999).
  5. Fixed bug with using different horizontal color and vertical color for the grid lines. The m_clrVertLine setting did not work when m_bGridItemBorders flag was switched on.
  6. Fixed problem with clicking on CBCGPGridURLItem in read-write mode.
  7. Fixed a bug with automatic sizing of grid columns. The bug appeared when auto-sizing was enabled with EnableColumnAutoSize(TRUE).
  8. Fixed bug with "Ctrl+A" for in-place editing of grid items. "Ctrl+A" selects all text inside in-place editor during in-place editing, instead of the entire grid as before.
  9. Fixed memory leak in CBCGPGridCtrl::CopyHtmlToClipboardInternal.
  10. Fixed some drawing problems in CBCGPButton: when check box has BS_TOP or BS_BOTTOM style, the text is correctly positioned now.
Version 10.21. Released 10/28/2008
New features
  1. The product is adapted for Visual Studio 2008 Service Pack 1.
  2. A new class 'CBCGPMessageBox' has been added. This class enhances the standard Windows Message Box component (see screenshot). The following features are provided out of the box:
    • Office 2003/2007 look
    • Custom look
    • Custom icons and buttons
    • Check box control
    • Left and right text alignment

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

  3. Implemented a lot of improvements and fixes in the Grid control:
    • Added Left Header (see screenshot). You can use this column to display either currently selected row or row numbers. Please call a new method 'EnableRowHeader' to enable/disable this column and 'EnableLineNumbers' to show/hide the row numbers.
    • Copy to HTML support (see screenshot). The grid control allows to export selection or the whole content to the clipboard in "HTML Format". Please see BCGPGridExample sample. New CBCGPGridCtrl::Copy function has been added.
    • CBCGPGridCtrl::SetCurSel method is virtual now.
    • Added functions to work with selection: SelectRow, SelectAll, IsAllSelected, GetSelectionCount.
    • Added CBCGPGridCtrl::InsertRowBefore.
    • Added CBCGPGridCtrl::OnGetColumnMinWidth to specify the minimal width of the column
    • Added "frozen" columns support. The following new methods have been added to the grid control:
      • FreezeColumns: This function enables the "frozen column" feature, which allows to keep columns visible while the rest of columns are scrolled horizontally.
      • UnfreezeColumns: disables the "frozen columns" feature.
  4. Added read-only mode to CBCGPGanttControl: use a new method SetReadOnly to enable/disable this mode and IsReadOnly to whether a Gantt control is in read-only mode.
  5. CBCGPDialog::SetBackgroundImage supports PNG images now.
  6. CBCGPPropertySheet has a new mode now: PropSheetLook_Wizard (see screenshot).
  7. CBCGPPropertySheet tree mode has a new look (see screenshot): the left-side tree control displays lines, and tree nodes are not "auto-collapsed" now. If you wish to keep the former look, please set the static variable CBCGPPropertySheet::m_bUseOldLookInTreeMode to TRUE.
  8. Added support for Help ("?") caption button in the skinned dialogs and property sheets.
  9. CBCGPPropertySheet::EnableVisualManagerStyle and CBCGPDialog::EnableVisualManagerStyle have a new, optional parameter 'bNCArea'. Pass 'TRUE' if you wish to display your dialog or property sheet with skinned borders and caption (see screenshot).
  1. Fixed a lot of bugs in the skinned controls and dialogs:
    1. CBCGPStatic redraws itself when control is being enabled/disabled
    2. CBCGPGroup handles WM_UPDATEUISTATE message. This fixes some redrawing bugs.
    3. CBCGPButton: fixed some drawing bugs in check box and radio button modes.
    4. CBCGPDialog and CBCGPPropertySheet handle WM_SETTEXT message and redraws the dialog caption now.
    5. CBCGPPropertySheet adjusts the property sheet buttons when "Apply" button is clicked.
    6. CBCGPEdit::OnNcPaint draws the control border only if control has 'WS_BORDER' style.
    7. The skinned caption height is calculated correctly now in CBCGPDialog and CBCGPPropertySheet. If the window has 'WS_EX_TOOLWINDOW' style, the caption height is calculated properly now.
    8. CBCGPButton supports 3-state check boxes now.
    9. CBCGPButton allows to subclass multi-line and right/center aligned check boxes and radio buttons.
    10. The dialog group box is painted correctly now when the group caption is empty.
  2. Tooltip position for CBCGPGridColorItem is calculated properly now.
  3. Fixed bug with tabs and indenting in the editor, fix in CBCGPEditCtrl::InsertTab.
  4. Mouse double click to select one word in the editor works properly now.
  5. CBCGPEdit doesn't "eat" EN_CHANGE notification.
  6. Fixed some visual bugs with drawing connectors in Gantt control.
  7. Improved performance of the Gantt storage: a developer can load a large amount of items.
  8. CBCGPGridCtrl: fixed bug with assertion failed in debug when only one column is visible.
  9. CBCGPEditCtrl: Fixed bug in GetLine: the previous version truncated the last character in line.