Version 29.2. Released 2/19/2019 New Features: Visual Studio 2019 Preview support (retail product version only): The product Integration Wizard fully supports Visual Studio 2019. The source files are fully compliant with Visual 2019 C++ compiler. All our examples and samples were thoroughly tested with VS 2019. Controls CBCGPButton: added BS_DEFCOMMANDLINK and BS_COMMANDLINK styles support (see screenshot). Please take a look at BCGPControls example to see this feature in action. CBCGPCalendar: added keyboard navigation support. CBCGPDateTimeCtrl: implemented dates range support (see screenshot). If developer specifies a pair of two date/time pickers as "related" (by calling a new method CBCGPDateTimeCtrl::SetRelated), a user will be able to select a dates range in the popup months calendars and selected dates are displayed in 2 related controls. BCGPControls example demonstrates this new feature. CBCGPListBox: added item tooltip when the list box is a property sheet navigation window and there is no enough space to display a whole page name. MSAA and CodedUI Tests CBCGPCircularProgressIndicatorImpl: added EVENT_OBJECT_VALUECHANGE notification upon progress value changing. Improved automation support in the gauge controls. CBCGPGridCtrl: added STATE_SYSTEM_INVISIBLE state for the hidden grid items. Miscellaneous CBCGPPageTransitionManager::SetPageTransitionEffect has a new, optional parameter 'bIsFirstPageTransition' (default value is FALSE). If this parameter is TRUE, the first page will appear with the specified page transition effect. Please take a look at PropSheetDemo sample to see this feature in action. CBCGPPopupWindow: added new member m_bIsTopMost (default value is TRUE). When this attribute is TRUE, the popup window is created with WS_EX_TOPMOST extended window style. Set it to FALSE in CBCGPPopupWindow-derived class constructor if you don't need to create this window as topmost. CBCGPGridCtrl: improved grid header appearance in some visual themes. Examples and Samples DateTimeCtrl: demonstrates new date/time picker features. PropSheetDemo: demonstrates 1-st page transition effect. Fixes: Dialogs and forms: addressed issue with cleaning-up control info tips when the dialog is being destroyed. CBCGPEdit: addressed issue with control redrawing after losing focus in some visual themes. CBCGPListBox: addressed issues with horizontal scrolling when control has LBS_MULTICOLUMN style. CBCGPWnd: code that disconnects accessibility clients was moved from the class destructor to WM_DESTROY message handler. CBCGPEditCtrl: addressed issue with incorrect vertical scrolling when some text blocks are collapsed. CBCGPGridCtrl: addressed issue with destroying grid window during automation tests. Version 29.1. Released 12/12/2018 New Features: Chart Control Implemented data binding (see screenshot). You can easily add a chart data from external data source such as ODBC or ADO. The following classes were added: CBCGPChartDataProvider. CBCGPChartODBCDataProvider. CBCGPChartDAODataProvider. CBCGPChartADODataProvider. New methods BindDataTable and BindDataSQL were added to CBCGPChartVisualObject class. Please take a look at BCGPChartExample application ("Chart Data Binding" view) to see this feature in action. Chart color theme can be edited in the Visual Designer now (see screenshot). Gauge Controls Added themes support (see screenshot): you may specify new themes in the Visual Designer and switch between themes using new CBCGPVisualContainer methods SelectVisualTheme or SelectVisualThemeByName. Please take a look at BCGPDigitalDashboard and BCGPGaugesDemo examples to see this feature in action. CBCGPCircularProgressIndicatorImpl: added animation effect for setting a new position. CBCGPCircularProgressIndicatorImpl::SetPos has a new, optional parameter uiAnimationTime. See BCGPDigitalDashboard example ("Call Center" view) to see this feature in action. Grid and Report Controls Added a new virtual method CBCGPGridCtrl::DestroyRow - override it to add some custom actions when grid row is destroyed. Method CBCGPGridCtrl::CleanUp is virtual now. Graphics Manager A new static member CBCGPGraphicsManagerD2D::m_bTrailingSpacesInTextSize specifies whether text trailing spaces should be counted in CBCGPGraphicsManagerD2D::GetTextSize method. By defaut this member is FALSE and trailing spaces are ignored. CBCGPGraphicsManagerD2D: added factory access methods: GetD2D1Factory returns Direct2D factory, GetDWriteFactory returns DirectWrite factory and GetWICImagingFactory returns WICImaging factory. A new static method CBCGPGraphicsManager::SetDefaultGraphicsManagerType allows to specify a graphics manager type that will be used by default. For example, if for some reason you wish to disable D2D usage, please call CBCGPGraphicsManager::SetDefaultGraphicsManagerType (CBCGPGraphicsManager::BCGP_GRAPHICS_MANAGER_GDI_PLUS) and GDI+ will be used by default. Miscellaneous CBCGPMessageBox: added a new static member 'm_nTextHeightRatio' (default value is 5). You may change this value to make a message box wider or narrower. CBCGPListBox: implemented default item support. A default item is rendered using bold font. Call new method CBCGPListBox::SetDefaultItem to specify default item and CBCGPListBox::GetDefaultItem to get a current default item index. A new method CBCGPSVGImage::ReplaceColors: replaces all occurrences of specific color with a new one. Examples and Samples BCGPChartExample: added new view "Chart Data Binding". BCGPDigitalDashboard: added theme selection (light and dark) demonstration. Fixes: CBCGPMessageBox: addressed issue with message box width in case of a wide caption. CBCGPEditCtrl: addressed issue with hiding a caret in the editor control. Diagram: addressed issues with connectors tracking in the edit mode. CBCGPCircularProgressIndicatorImpl: addressed issue with reposing sub-gauges when a parent container is being scrolled. Version 29.0. Released 29/10/2018 New Features: Implemented Notification Badges support (see screenshot). A notification badge is a small-size element placed near control and it indicates some event associated with control. For example, you may add a numeric badge with a number of new mails to "Mail" button or Security Alert icon to the link control. Notification badges were added to the following controls: Push Button. Grid. Tree control. List box. Please take a look at the following examples/samples to see this feature in action: BCGPGaugesDemo("Progress Indicator" view, "Check for Updates" button), BCGPGridExample ("Cell Types" view), ListBoxDemo, PropSheetDemo (List on Left) and TreeCtrlDemo. Dialogs and Forms CBCGPStaticLayout: added support for controls group. New method AddGroupAnchor allows to apply the same layout for all controls located in the specific group. CBCGPPropertySheet: added numeric notification badges support (see screenshot). New methods were added to CBCGPPropertyPage class: SetNumericNotificationBadge. ClearNumericNotificationBadge. Please take a look at PropSheetDemo sample (List on Left) to see this new feature in action. CBCGPMessageBox has the following new features and improvements (see screenshot): You can create any CWnd-derived custom control in place of the default text box: override GetTextBoxSize method to specify the control size and CreateTextBox method to create the control. Custom images support: override GetIconSize method to specify the image size and OnDrawIcon to draw a custom image. Please take a look at MessageBoxDemo sample to see these features in action. New class CBCGPMessageLightBox implements a message box in light-box style (see screenshot). Please take a look at LightBoxDemo sample to see this new feature in action. Chart Control CBCGPChartView::EnableAdvancedLegend has a new, optional parameter 'bPrint'. Set it to TRUE if you wish to print an advanced chart legend object. CBCGPChartSurfaceSeries has a new method SetHitTestTolerance. If you call this method with dblHitTolerance different from 0 (e.g. 5), the hit testing returns vertices instead of planes. Gauge Controls Circular Progress Indicator: added a new style BCGPCircularProgressIndicator_Dots (see screenshot). This style can be specified in the infinite mode only. CBCGPNumericIndicatorImpl: added numeric format support (see screenshot): BCGP_NUMERIC_INDICATOR_FORMAT_STANDARD - standard format (default). BCGP_NUMERIC_INDICATOR_FORMAT_SCIENTIFIC - scientific format. BCGP_NUMERIC_INDICATOR_FORMAT_HEX - HEX format (32-bits integers only). Call new method CBCGPNumericIndicatorImpl::SetFormat to specify the numeric format. BCGPGanttDemo example Illustrates this new feature. Visual container and Visual Designer New method CBCGPGlobalUtils::ScaleByDPI(CBCGPVisualContainer& container) scales all container elements according to current DPI. CBCGPBaseVisualObject: new virtual method GetHitTestTolerance allows to specify a tolerance of the hit testing. Grid and Report Controls Implemented notification badges (see screenshot). Added new methods CBCGPGridItem::SetNotificationBadge, CBCGPGridRow::RemoveAllNotificationBadges, CBCGPGridItem::OnDrawNotificationBadge and CBCGPGridCtrl::GetNotificationBadgePadding. Please take a look at BCGPGridExample application ("Cell Types" view) to see this new feature in action. Filter bar appearance customization. New optional parameter 'color' has been added to CBCGPGridCtrl::EnableFilterBar method. CBCGPGridCtrl::GetColumnCount has a new optional parameter bCalcVisibleOnly. Set this parameter to TRUE if you need to calculate the visible columns number. CBCGPGridCtrl: improved appearance in some Visual Managers. Added loading grid header/items images directly from the resources: SetHeaderImageList and SetImageList with 'UINT nResID' parameter methods were added to CBCGPGridCtrl class. New virtual method CBCGPGridCtrl ::OnDrawExpandBox allows to customize an expand/collapse box appearance. Controls CBCGPButton: added numeric notification badges support (see screenshot). New methods were added to CBCGPButton class: SetNumericNotificationBadge. ClearNumericNotificationBadge. GetNumericNotificationBadge. GetNumericNotificationBadgeColor. OnDrawNotificationBadge. CBCGPColorButton: a new method SetDrawColorInDisabledControl allows to display a color box on the disabled control. By default, the color is not displayed when control is not enabled. CBCGPColorComboBox: added ability to specify the selected item prior to the control creation. CBCGPHotSpotImageCtrl has the following new features (see screenshot): Added SVG images support: the control image source can be SVG now. In addition, you may specify hot spot areas by SVG element id: a new method AddHotSpot(UINT nID, const CString& strSVGElementID, LPCTSTR lpszToolTip, LPCTSTR lpszToolTipDescription) was added. Implemented keyboard navigation and gesture events support. Added MSAA and Coded UI Tests support. Please take a look at HotSpotDemo sample to see these new features in action. CBCGPListCtrl: implemented drawing of selected item with a visual theme (see screenshot). If for some reason you wish to keep old appearance (default blue background), please call a new method CBCGPListCtrl::EnableThemedSelection with bEnable = FALSE. CBCGPListBox: added numeric notification badges support (see screenshot). New methods were added to CBCGPListBox class: SetItemNotificationBadge RemoveItemNotificationBadge GetItemNotificationBadgeNumber GetItemNotificationBadgeColor Please take a look at ListBoxDemo sample to see this new feature in action. New class CBCGPTabCtrl implements a standard Windows tab control (CTabCtrl) with visual themes support (see screenshot). CBCGPTreeCtrl: added numeric notification badges support (see screenshot). New methods were added: SetItemNotificationBadge RemoveItemNotificationBadge RemoveAllNotificationBadges CBCGPTreeCtrl: implemented support for TVS_TRACKSELECT tree control style. Graphics Manager New compilation flag BCGP_EXCLUDE_TEXTURED_BRUSHES allows to reduce CBCGPBrush size. Uncomment this flag in BCGCBProConfig.h if you don't use textured brushes. CBCGPGraphicsManagerGdiPlus: added a new global flag m_bLoadImageFromStream. By default, GDI+ locks files when loading images from disk storage. To prevent this, you need to set this flag to TRUE and loaded memory streams will be used instead. Edit control Implemented error indication support (see screenshot). A new simple and flexible mechanism allows to specify incorrect words or spelling errors and display them with a red curved line under the text and display list of suggested corrections in the word's context menu. EnableErrorIndication: enable/disable error indication. The following new methods were added to CBCGPEditCtrl class: IsErrorIndicationEnabled: tells whether error indication is enabled. IsCorrectWord: override this method to specify if specific word is incorrect. By default, all words are treated as correct. GetWordCorrections: override this method to specify a list of suggested corrections and list of custom actions related to the incorrect word. OnWordCorrectionMenuCustomAction: override this method to perform a custom action for the incorrect word (e.g., add this word to dictionary). GetIncorrectWordToolTip: override this method to specify a custom tooltip displayed near incorrect word (e.g., a reason why this word is treated as incorrect or recommended action). Please take a look at BCGPVisualStudioGUIDemo example to see this new feature in action. Improved side bar appearance under dark and high-contrast visual themes. Miscellaneous The library source code is fully-compatible now with Intel Compiler 18.0/19.0. We have fully tested our product with Intel Parallel Studio XE 2018/2019. D2D initialization: added D2D validation code. If D2D rendering with hardware acceleration is failed, we're trying to use a software rendering. If this type of the rendering is ok, all D2D render targets will be automatically created with D2D1_RENDER_TARGET_TYPE_SOFTWARE type. If the software rendering is failed too, GDI+ graphics manager will be used by default. This addition solves issues with outdated D2D/DirectX drivers on the customer machines. CBCGPFontSelector has new optional parameters in the class constructor: clrText: specifies a text color. bTransparentBkMode: specifies whether background should be transparent. CBCGPExplorerToolBar has the following new and improved features (see screenshot): Added optional Refresh (Reload) button with ability to cancel loading process. EnableNavigationButtons has 2 new optional parameters: nRefreshID and nStopID. If a history menu button is not specified, user can right-click on Back/Forward buttons and menu with specific history items will be displayed. A history type (BCGPEXPLORERTOOLBARHISTORY_All, BCGPEXPLORERTOOLBARHISTORY_Prev or BCGPEXPLORERTOOLBARHISTORY_Next) can be obtained by calling a new method GetHistoryMenuType. Improved appearance of the navigation buttons: the icons are loaded now from the new SVG images and nicely scaled in all DPI modes. Please take a look at ExplorerBarDemo sample to see these new features in action. CBCGPScrollView: added support for the gesture pan event. The window can be easily scrolled now on the touch-enabled devices. CBCGPSVGImage: implemented elements filtering method SetElementsFilter. The filter contains a list of SVG element IDs and allows to perform any image editing action such as color changing only for the elements in the list. Examples and Samples BCGPGaugesDemo: added "Dots" circular progress and numeric indicator format demonstrations. BCGPGridExample: added grid cell numeric badge demonstration. ExplorerBarDemo: added demonstration of new history modes and refresh/stop button. HotSpotDemo: demonstrates how to create SVG-based control. LightBoxDemo: added BCGPLightMesageBox demonstration. ListBoxDemo: added numeric badges demonstration. MDIEditorDemo: added error indication demonstration. MessageBoxDemo: added custom (window control-based) text box and custom-size icon demonstration. PropSheetDemo: added page numeric badge. ResizableForm: demonstrates how to create a controls group layout. TreeCtrlDemo: demonstrates tree item highlighting mode and item numeric badges. Fixes: CBCGPVisualContainer: addressed issue with scrolling of non-watermark textured background. CBCGPSliderCtrl: addressed issue with drawing zoom buttons in disabled control. CBCGPBaseVisualCtrl: addressed issue with drawing control's non-client area using GDI+ graphics manager. CBCGPGridCtrl: addressed issue with horizontal alignment in CBCGPGridCheckItem with a text label. CBCGPGridCtrl: addressed issue with horizontal scrolling to a column by EnsureVisible and EnsureVisibleColumn methods for the wide columns. Diagram: addressed issue with drawing of connection ports in CBCGPDiagramTableShape during a scaling process. Diagram: fixed bug with a mouse cursor on the diagram's connector. Diagram: addressed some issues with scaling, drawing, dragging of the diagram connectors. Diagram: connectors are correctly handling BCGP_EDIT_NOSIZE and BCGP_EDIT_NOMOVE editing flags now. Version 28.0. Released 8/1/2018 New Features: Dialogs and Forms BCGPControlInfoTipStyle: added new info tip styles - BCGPINFOTIP_Warning, BCGPINFOTIP_InfoBlue, BCGPINFOTIP_Question and BCGPINFOTIP_Bulb. CBCGPPropertySheet: improved page redrawing performance upon changing active page and window resizing. A new m_bFlickerLess member was added to CBCGPPropertySheet class. If for some reason you need to keep a previous behavior, set this member to FALSE in the property sheet constructor. Chart Control Implemented new color themes: CBCGPChartTheme::CT_SPB (see screenshot), CBCGPChartTheme::CT_PALACE (see screenshot) and CBCGPChartTheme::CT_ICE (see screenshot). Implemented hit-testing and data-point tooltip for the 3D Surface chart. Gauge Controls Added a new class CBCGPNumericIndicatorCtrl: implements a Windows control with underlined numeric indicator (CBCGPNumericIndicatorImpl). Implemented smoothly transitioning numbers (see screenshot) in CBCGPNumericIndicatorImpl: uiAnimationTime and animationType parameters were added to CBCGPNumericIndicatorImpl::SetValue method. New method "CBCGPNumericIndicatorImpl::SetTextFormatAutoSize" specifies whether a control text size should be changed upon control resizing. Grid and Report Controls New virtual method CBCGPGridItem::GetDataColorScale allows to customize a data color scale. Filter bar keyboard support has been improved: added support for the standard keyboard shortcuts such as Ctrl+X, Ctrl+C, Ctrl+V and Ctrl+A. Controls Added standard Windows keyboard accelerators (such as "Ctrl+C") processing to all edit controls. CBCGPListBox: improved hit testing performance for control with a large number of items. CBCGPTreeCtrl: added support for themed (visual manager-style) check boxes. CBCGPListCtrl: added support for themed (visual manager-style) check boxes. Graphics Manager Implemented D2D validation in CBCGPGraphicsManagerD2D: CBCGPGraphicsManagerD2D::InitD2D: if D2D is not properly installed on the machine, all future renderings will be performed by CBCGPGraphicsManagerGDIPlus or CBCGPGraphicsManagerGDI. CBCGPGraphicsManagerD2D::CreateImage and CBCGPGraphicsManagerGdiPlus::CreateImage: implemented loading of external SVG files. Examples and Samples BCGPChartExample: added new chart color themes and interactive 3D surface chart demonstration. BCGPGaugesDemo: added demonstration of numeric indicator animation. ResizableForm: demonstrates page transition effect in the resizable property sheet. Fixes: CBCGPCalendar: addresses an issue with control layout when max. date is specified. CBCGPLightBoxDialog: addresses an issue with caption button mouse highlighting. Control info tips: addresses an issue with control appearance in preview mode. CBCGPMessageBox: addresses an issue with message box displayed from the popup menu. CBCGPScrollBar: addresses an issue with control appearance in RTL mode. CBCGPScrollBar: addresses an issue with incorrect hit-testing on control edges. CBCGPPageTransitionManager: addresses an issue with incorrect fade animation. CBCGPPropertySheet: addresses an issue with page transitions in the resizable property sheet. CBCGPStatic: addresses an issue with drawing separator in the preview mode. CBCGPSliderCtrl: addresses an issue with incorrect redrawing of zoom buttons in some cases. CBCGPPropertySheet: addresses an issue with Windows task bar icon flickering during page transition when the property sheet is a main application window. CBCGPPropertySheet: a navigation pane (located at the left side) has a correct tab order now. Version 27.3. Released 5/21/2018 New Features: Chart Control CBCGPChartLineObject: added line shadow support. New methods SetShadow and GetShadowDepth were added to CBCGPChartLineObject class. Added 2 new thumbnail flags (passed to CBCGPChartVisualObject::SetThumbnailMode): BCGP_CHART_THUMBNAIL_DRAW_AXIS_NAME: displays an axis name. BCGP_CHART_THUMBNAIL_DRAW_TITLE: displays a chart title. Implemented ternary axis title location modes: new CBCGPChartTernaryAxis::TitleMode enumeration has the following members: TM_NORMAL: default, title is located at the end of the axis TM_CENTER: the title is located at the center of the axis. The title location is used by the following new methods: CBCGPChartTernaryAxis::SetTitleMode - sets the title mode for the ternary axis. CBCGPChartTernaryAxis::GetTitleMode - returns the current title mode. CBCGPChartVisualObject::SetTernaryAxesTitleMode - sets the title display mode for all ternary axes. Grid and Report Controls Added highlighting of the matched text for the filter bar (see screenshot): CBCGPGridCtrl ::EnableFilterBar method has new optional parameters: 'clrMarkBackground' - specifies highlighted text background and 'clrMarkText' - specifies highlighted text foreground. BCGPGridExample ("Filter Bar" view) and TreeCtrlDemo demonstrate this new feature. Added new BCGM_GRID_FILTERBAR_CHANGED event. This event is fired when text in the grid filter bar is being changed. CBCGPGridCtrl::HasNextSibling method has a new parameter bVisibleOnly that allows to use this method with a filter. New method CBCGPGridCtrl::OnMeasurePrintPageItems allows to customize content in printing mode. Controls Calendar bar: improved month picker appearance (see screenshot). New method SetEditBoxesVerticalAlignment (implemented in all dialog classes such as CBCGPDialog, or CBCGPFormView) allows to specify a single-line edit box text vertical alignment for all edit box controls located on this dialog. CBCGPEdit: implemented single-line text vertical alignment (see screenshot). SetVerticalAlignment / GetVerticalAlignment methods were added to this class. Please take a look at EditBoxDemo sample to see this feature in action. CBCGPEdit::EnableFolderBrowseButton: added a new, optional parameter lpszInitialFolder - specifies a folder which initially displayed in the Folder Picker dialog. CBCGPTreeCtrlEx: implemented standard Tree View notifications (TVN_SELCHANGED, TVN_SELCHANGING, TVN_ITEMEXPANDING and TVN_ITEMEXPANDED). New method CBCGPTreeCtrlEx::EnableTreeCtrlNotifications allows to enable/disable them. Implemented easy way to create CWnd-derived controls on the static placeholder location: a new method CreateOnPlaceHolder was added to the following classes: CBCGPCalculator CBCGPCalendar CBCGPEditCtrl CBCGPGridCtrl Examples and Samples BCGPChartExample: added line object shadows demonstration, axis label mode and title mode in the Ternary view and CBCGPTreeCtrl (located in Workspace view) was replaced with CBCGPTreeCtrlEx with filter bar. BCGPGaugesDemo: CBCGPTreeCtrl (located in Workspace view) was replaced with CBCGPTreeCtrlEx with filter bar. BCGPGridExample: added Filter Bar results highlighting demonstration. EditBoxDemo: added edit boxes vertical alignment demonstration. TreeCtrlDemo: added tree control notifications and filter bar demonstrations. Fixes: CBCGPGaugeImpl: addresses issue with sending tracking event to the correct parent windows. CBCGPGridCtrl: fixed DPI issue for the grid Combo-box item and Auto-Complete list, now font of a dropped list is scaled accordingly. CBCGPGridCtrl: addresses issue with in-place editing of the merged cells. Chart: fixed bug in hit-testing points for stock chart in the line mode. Chart: fixed a bug of recalculation of axis values when adding an array of double values. CBCGPCalendar: addresses problem with displaying selected day in the high-contrast mode. Version 27.2. Released 4/9/2018 New Features: Introduced new Circular Progress Indicator gauge (see screenshot). This gauge implements a circular progress control functionality and can be created either as "standard" (with percentage) or "marquee" (infinite) mode. The following new classes were added: CBCGPCircularProgressIndicatorImpl: windows-less object which can be used inside the visual container. CBCGPCircularProgressIndicatorCtrl: control that can be added directly to dialog box or other windows. CBCGPCircularProgressIndicatorOptions: circular progress indicator options (such as dimensions, styles, colors and others). CBCGPCircularProgressIndicatorColors: circular progress indicator color theme. CBCGPCircularProgressIndicatorRenderer: window-less helper; allows to draw the indicator inside other controls such as buttons or tabs (see screenshot). Please take a look at BCGPGaugesDemo example ("Circular Gauges | Progress Indicator" page) to see this new gauge in action. Gauge Controls CBCGPCircularGaugeImpl: added a new virtual method OnDrawLevelBar. Override it if you wish to customize the level bar appearance. CBCGPBaseVisualCtrl::CreatePopup has a new, optional parameter nFlags: set it to BCGP_VISUAL_POPUP_DONT_CLOSE_ON_MOUSE_CLICK if you don't wish to close the popup window by mouse button click. CBCGPSwitchImpl: implemented visual manager theme support (see screenshot). New methods SetVisualManagerTheme and IsVisualManagerTheme were added to this class. In addition, CBCGPVisualManager has a new virtual method GetSwitchColors. CBCGPCircularGaugeImpl: added equidistant labels support. New methods EnableEquidistantLabels and IsEquidistantLabels were added to this class. Grid and Report Controls Updated Windows Gestures support. Updated adding and removing items in row "on the fly". New methods CBCGPGridRow::InsertItem, CBCGPGridRow::RemoveItem were added. Implemented grid items Bold font support. New methods CBCGPGridRow::SetBoldFont and CBCGPGridRow::IsBoldFont were added. Controls CBCGPButton: icon rendering code was moved to new virtual method OnDrawImage. CBCGPMenuButton: new virtual method OnDrawMenuArrow allows to customize the button's drop-down arrow appearance. CBCGPTreeCtrlEx: added support for TVIS_BOLD flag (see screenshot). Graphics Manager New methods CBCGPColor::Mix and CBCGPBrush::Mix allow to combine two colors using a specific proportion. CBCGPBrushGradientStop: added default values to the constructor. Miscellaneous Method CBCGPChartVisualObject::NeedDisplayAxes is a virtual now. New method CBCGPGlobalUtils::IsPlacedOnActiveMenu tells whether a control is located on the active popup menu/window. CBCGPSVGImageList: improved SVG sprite loading and parsing algorithm. Each icon is loaded now as separate SVG, therefore there is no ambiguous styles issue (when source SVG icons have the same style names) anymore. Examples and Samples LightBoxDemo: illustrates usage of CBCGPCircularProgressIndicatorCtrl in the light box-style dialog (see screenshot). TreeCtrlDemo: added TVIS_BOLD style demonstration. BCGPGaugesDemo: added new view ("Circular Gauges | Progress Indicator" that illustrates a Circular Progress Indicator). Fixes: CBCGPLightBoxDialog: the title is properly updated now when the window caption was changed using WM_SETTEXT message. CBCGPHotSpotImageCtrl: addresses issue with control appearance in the right-to-left layout. CBCGPListBox: addresses problems with LBS_MULTICOLUMN control style. If this style is applied, support of item descriptions, captions, tab stops, indentions is disabled now. CBCGPPropertySheetCtrl: addresses issue with incorrect page border appearance in non-themed property sheet with a standard Windows tab control. In the previous product versions, the page exceeded control size on the first displaying. CBCGPMenuButton: addresses issue with control resizing when parameter bCalcOnly of SizeToContent method is TRUE. CBCGPScrollBar: addresses issue with disabling scrollbar thumb in combo box drop-down list in specific cases. CBCGPGridCtrl: addresses issue with incorrect column width after zoom-in/zoom-out action (when column auto-sizing is specified). Version 27.1. Released 2/12/2018 New Features: Grid and Report Controls Improved vertical and horizontal header items appearance. CBCGPGridColorItem: added custom colors support - new methods SetColors and SetWebColors were added to this class. Controls CBCGPDateTimeCtrl: added system month format support. Set m_monthFormat to (-1) in order to use short date format (see screenshot). CBCGPStatic: new method 'SetPicture(const CString& strImagePath, BOOL bDPIAutoScale = TRUE, BOOL bAutoResize = FALSE)' allows to display external (loaded from file) images. Miscellaneous CBCGPSVGImage::ExportToBitmap has a new, optional parameter 'clrBackground'. If this parameter is not CLR_NONE, the method creates 24bpp bitmap with specified background. Otherwise, 32bpp bitmap with transparent background will be created. Fixes: CBCGPComboBox: addresses issue with missing group separator in non-themed combo box. Fixed compilation issue when _ATL_NO_AUTOMATIC_NAMESPACE flag is specified. CBCGPPlannerViewSchedule: addresses issue with incorrect returned value in GetResourceFromPoint method (when resources count is one). CBCGPScrollBar: fixed some problems with horizontal scrolling in the themed (Visual Manager-enabled) list view control. CBCGPPropertyPage: fixed problem with redrawing group boxes during the page transition process. CBCGPSVGImage: fixed memory leak in DoDraw method (when parameter 'bCashBitmap' is FALSE). Editor Outline Parser: improved 64-bit support. Version 27.0. Released 1/24/2018 New Features: Added SVG images support. The following new classes were added to the product: CBCGPSVGImage: implements an SVG image loading and rendering. CBCGPSVGImageList: implements a list of SVG images ("sprite"). Please take a look at new SVGViewDemo sample application (see screenshot) to see this new implementation in action. Grid and Report Controls New message BCGM_GRID_HEADER_CHANGED is called on any changes on grid header, when columns are inserted, deleted or column position, size or visibility are changed. Added new virtual method IsReportCtrl(). Grid control: fixed print preview issue. Now the selected printer font is consistent in print preview mode and the print out. Calendar and Planner Implemented new view type: BCGP_PLANNER_TYPE_WEEK_DAYS (see screenshot). This view can be used instead of the standard week-view to show the week in multi-column mode (like work-week view). CBCGPPlannerManagerCtrl: added new attribute "Schedule Time Delta Day". Setting it to TRUE allows to display more appointments on the screen without scrolling the planner view. Call new method CBCGPPlannerManagerCtrl::SetScheduleTimeDeltaDay to set "day" scale instead of the standard "time" scale (60, 30, 20, ... minutes). Schedule View columns are automatically stretched now to occupy all free space. Implemented ability to display an item's tooltip in bounds of the whole appointment: SetToolTipWholeArea and IsToolTipWholeArea methods were added to CBCGPPlannerManagerCtrl class. Controls CBCGPButton: added SVG image support. CBCGPDateTimeCtrl: implemented "read-only" mode. Call new method SetReadOnly to enable/disable this mode or IsReadOnly to check the mode. CBCGPEdit: added button's tooltip. Call new method SetBrowseButtonToolTip to specify the tooltip. CBCGPComboBox: improved appearance of icons in the disabled control. CBCGPTreeCtrlEx: optimized control items adding performance. CBCGPComboBox: added ability to use a custom edit control - override new virtual method GetEditCtrl and return a reference to CBCGPEdit-derived object. CBCGPStatic: added a picture support. Call new method CBCGPStatic::SetPicture to display BMP, PNG or SVG image inside the control. Graphics Manager Added new class CBCGPGeometryGroup: implements a group of the geometries. CBCGPBrush: added gradient stops support (D2D and GDI+ only). SetLinearGradientStops, SetRadialGradientStops and GetGradientStops methods were added. CBCGPBrush: added color transformation methods: AddaptColors: translates brush color(s) InvertColors: inverts brush color(s) ConvertToGrayScale: converts brush color(s) to gray scale Simplify: simplifies brush color(s) - all "non-empty" colors are converted to white CBCGPStrokeStyle: implemented custom dashes support; SetDashes method was added. Fixes Fixed some problems with compilation in Visual Studio 2017 with /permissive- compiler option. CBCGPPropertyPage: fixed problem with a default button appearance on the themed wizard page in "aero" mode. Dialogs: fixed info tip positions after changing controls layout. CBCGPListBox: fixed problem with WM_COMPAREITEM message processing in CBCGPListBox-derived classes. CBCGPRadialMenuObject: fixed bug with radial menu size after animation in high-DPI systems. CBCGPWinUITiles: fixed bug with tiles layout after deleting all tiles in group. CBCGPGridCtrl: fixed color issues in report control with theme colors specified by m_ColorData. CBCGPGridCtrl: fixed drawing bug in multiline header: the merged header items with FreezeColumns feature and horizontal scrolling. CBCGPHeaderCtrl correctly draws center/right-aligned icons now. CBCGPGridCtrl: fixed some problems with a grid scrolling during selection by mouse. CBCGPScrollBar: fixed some issues with using control in the touch-screen environment. Version 26.1. Released 10/16/2017 New Features: Visual Manager and Themes CBCGPVisualScrollBar: improved look of Visual Manager-style scrollbar when default ("Native Windows") Visual Manager is activated. CBCGPVisualManager: improved Breadcrumb and WinUI Tiles appearance in the high-contrast mode. Controls CBCGPEdit: autocomplete can be used along with a popup dialog now. CBCGPDateTimeCtrl: implemented ability to hide "Today" button in the dropped-down calendar. EnableCalendarTodayButton and IsCalendarTodayButtonEnabled methods were added. CBCGPComboBox: new method 'AdjustDroppedWidth' sets the drop-list width by the widest combo box item. CBCGPInfoBoxRenderer: new member 'm_bRoundedCorners' allows to specify info box rounded corners (see screenshot). Miscellaneous All library, tools and samples icons were fully redesigned. CBCGPGraphicsManagerD2D: new virtual method 'GetCurrentRenderTarget' allows to use a custom, ID2D1RenderTarget-derived interface in CBCGPGraphicsManagerD2D-derived classes. Examples and Samples InfoBoxDemo: illustrates info-box rounded corners. Fixes Chart: fixed problem with data point position calculation in range bars. Version 26.0. Released 9/27/2017 New Features: A new Light Box dialog class (CBCGPLightBoxDialog) was added (see screenshot). We're assuming that most of you already used Light Boxes in the Web/Mobile applications - they are very popular today. But we strongly believe that this kind of UI can be successfully used in the desktop applications too, so we decided to implement them in our libraries. Please take a look at LightBoxDemo new sample application to see this feature in action. Hope, you'll like this modern UI style and you can easily add these dialogs to your applications and make your nice-looking programs even better! Toolbars and Menus CBCGPExplorerToolBar: added optional "Home" button (see screenshot). CBCGPExplorerToolBar::EnableNavigationButtons has a new optional parameter 'UINT nHomeID'. ExplorerBarDemo sample application demonstrates this new feature. Chart Control Chart legend: added ability to specify a legend cell text alignment: new SetTextAlignment and GetTextAlignment methods were added to CBCGPChartLegendCell class. Added ability to draw unsorted 'Pyramid' and 'Funnel' charts as sorted by default. Please call 'EnableDataPointsSorting(FALSE)' method to draw chart data points in the order they were added. Added order type for the legend entries. Call new method 'CBCGPChartVisualObject::SetLegendOrder' to set the order. The possible values are: LO_SERIES - default value. Draw entries in the order they were added. LO_REVERS - always in reversed order. LO_CHARTTYPE - depends on the chart type. Visual Manager and Themes New virtual method CBCGPVisualManager::OnDrawLightBoxDialogCloseButton allows to customize LightBox dialog "Close" button appearance. Grid and Report Controls New virtual method CBCGPGridItem::OnAddComboBoxItem allows to customize cell combo box items adding. A new virtual method CBCGPGridCtrl::CanShowColumnInColumnChooser allows to hide some columns in a Column Chooser pane. Added ability to disable header highlighting when all items in row are selected. New methods SetDisableWholeSelHeaderHighlighting and IsDisableWholeSelHeaderHighlighting were added to CBCGPGridCtrl class. New virtual method CBCGPGridCtrl::OnAfterTrackHeader is called after header item was resized by the user. New method CBCGPGridCtrl::IsWholeRowSelected checks whether all items in a row are selected. Controls Calendar bar allows keeping selection when user clicks some day from the previous or next month. If for some reason you need to keep a former behavior, set new global flag CBCGPCalendar::m_bSelectNextPrevMonthDate to FALSE. CBCGPComboBox: implemented vertical and horizontal item paddings. SetVerticalPadding, GetVerticalPadding, SetHorizontalPadding and GetHorizontalPadding methods were added. CBCGPInfoBoxRenderer: m_bFixedFrameWidth and m_bFixedFrameHeight flags were added. If these flags are TRUE, the info box frame will occupy the whole control area. Examples and Samples New sample application LightBoxDemo demonstrates LightBox Dialog (see screenshot). Fixes CBCGPAnimationManager: fixed some issues in "legacy" (timer-based) animation. This fix improves animation process under Windows XP or earlier versions where Windows native animation is not available. CBCGPButton::OnPaint passes ODS_DISABLED flag to CBCGPButton::DoDrawItem if control is disabled. CBCGPGroup: invisible groups are not rendered anymore by the parent dialog now. CBCGPListBox: corrected pin location when control has a horizontal scroll bar. CBCGPStatic: fixed some drawing problems when control has SS_ENDELLIPSIS or SS_LEFTNOWORDWRAP Windows styles. Charts: fixed problem with default tooltip in the 'Pyramid' and 'Funnel' charts. CBCGPInplaceToolTipCtrl: fixed bug with multiline tooltip appearance. CBCGPGridCtrl: fixed bug with sorting unsigned integers. CBCGPEditCtrl: fixed bug with highlighting markers on typing. CBCGPTreeCtrlEx::GetItem is working correctly now when TVIF_HANDLE is not specified in pItem->mask. Version 25.3. Released 5/22/2017 New Features: Visual Studio 2017 support: The product Integration Wizard fully supports Visual Studio 2017: since you can install different VS editions on the same machine, the wizard allows to choose which VS edition should be integrated with our product. The source files are fully compliant with Visual 2017 C++ compiler. All our examples and samples were thoroughly tested with VS 2017. Evaluation version contains DLLs and libraries required for VS 2017. Dialogs and Forms Flicker-less group boxes rendering. To optimize group boxes drawing and prevent flickering while dialog/form is being resized, we've moved group box rendering to the parent window. If for some reason you wish to disable this feature, simply call new method of CBCGPDialog, CBCGPDialogBar, CBCGPFormView and CBCGPPropertyPage classes SetGroupBoxesDrawByParent(FALSE). Automatically resizable check boxes, radio buttons and static labels. Sometimes (especially in high DPI modes), the text label is truncated and developer have to add some extra space to control. Calling new method of CBCGPDialog, CBCGPDialogBar, CBCGPFormView and CBCGPPropertyPage classes AutoResizeControls solves this problem. Docking Panes CBCGPToolBox and CBCGPToolBoxEx allow to add empty pages now. Chart Control BCGPChartCategory has 2 new categories: BCGPChartBarSmart and BCGPChartBar3DSmart. Use these categories for "comfortable" placing chart series (MS Excel-like). Gauge Controls Implemented circular and linear gauges' level bars (see screenshot). The bar can be created with one of the following styles: Rectangular Rectangular with rounded corners Thermometer (linear gauge only) The following new methods were added to CBCGPGaugeImpl class: AddLevelBar ModifyLevelBar GetLevelBarsCount GetLevelBar RemoveLevelBar RemoveAllLevelBars SetLevelBarValue Please take a look at BCGPGaugesDemo example to see this new feature in action. Visual container and Visual Designer A data animation type can be changed by calling new CBCGPBaseVisualObject method “SetDataAnimationType”. “GetDataAnimationType” returns an animation type. Visual container/control can be printed using some options specified by CBCGPVisualPrintOptions: m_bPrintScreenshot: print scaled screenshot (faster) m_bUseGDI: use GDI graphics manager New methods SetPrintOptions and GetPrintOptions were added to CBCGPBaseVisualCtrl class. Grid and Report Controls Improved header icons appearance in various visual themes (see screenshot). Color bar foreground color is correctly calculated now according to bar background. CBCGPGridSparklineItem::SparklineType has a new type: SparklineTypeBarSmart. Use this type for comfortable placing chart series (MS Excel-like). Implemented cell custom tooltips. EnableCustomToolTips and IsCustomToolTipEnabled methods were added. You've to override new virtual method GetItemCustomTooltip to display the custom tooltips. Controls CBCGPColorComboBox: implemented ability to specify a default color – SetDefaultColor and GetDefaultColor methods were added. CBCGPColorComboBox: added GetSelectedColor method. CBCGPComboBox: implemented item groups support (see screenshot). New methods SetItemGroupStart and IsItemGroupStart were added. See ComboBoxDemo sample application. CBCGPDurationCtrl: added new attribute 'CyclicScroll': when this attribute is TRUE, scrolling of the current control part doesn’t affect the next control part. SetCyclicScroll/GetCyclicScroll methods were added. CBCGPListBox: a color bar width can be specified by calling new method 'SetColorBarWidth'. GetColorBarWidth returns a current color bar width. CBCGPListBox: implemented items indentation. SetItemIndent and GetItemIndent methods were added to this class. CBCGPCheckListBox: added radio buttons support (see screenshot). SetItemRadioStyle and IsItemRadioStyle methods were added to this class. Please take a look at ListBoxDemo sample application to see this feature in action. New CBCGPInfoBoxCtrl control implements advanced text box with the following features (see screenshot): Custom background, text and frame colors Caption support Custom paddings Built-in or custom icons Auto-resize Shadow around the frame Color bar Link Copy content to clipboard You can use this control instead of multi-line static text. New sample InfoBoxDemo demonstrates this control in action. In addition, window-less class CBCGPInfoBoxRenderer can be used to draw a text box – we’re using it now in many samples. MSAA and CodedUI Tests Improved accessibility support in CBCGPListBox and CBCGPCheckListBox classes. Edit control CBCGPEditCtrl: added a new method ScrollToCaret. Call this method to scroll to the currently focused editor location. Added a new CBCGPEditCtrl::m_bIntelliSenseCloseOnShift data member. Setting FALSE allows to use '_' symbols in IntelliSense window. Miscellaneous Gestures: improved touch screen gesture scrolling in CBCGPEditCtrl, CBCGPGridCtrl, CBCGPScrollBar and CBCGPVisualScrollBar classes. CBCGPWinUITilesCtrl: developer can specify tiles runtime class by calling new method SetWinUITilesRTI. CBCGPDrawManager: added new methods GetColorBrightness and GetContrastColor. CBCGPShellBreadcrumb: added new virtual method OnAfterEnumFolderItems. Override this method to add custom items to the control. Examples and Samples BCGPChartExample: added "2D Side by Side Stacked Bar" and "3D Side by Side Stacked Bar" views. BCGPGaugesDemo: demonstrates how to use gauge level bars. BCGPGridExample: “Cell Types” view demonstrates how to use custom tooltips. InfoBoxDemo: this new sample demonstrates how to use CBCGPInfoBoxCtrl. ListBoxDemo: illustrates check list box radio items. Fixes: Include of multimon.h file is no longer used when product is compiled in the latest Visual Studio versions. Chart control: fixed bug with drawing animated objects when image cashing is on. Controls: standard Windows borders are rendered now when control is not themed. Dialogs: fixed bug with restoring window placement in the multi-monitor environment. CBCGPEdit: the background is correct now when control has ES_READONLY style. CBCGPMessageBox: fixed controls layout problem when single-line message width is less than header width. Chart control: fixed some problems with drawing log scale axis. CBCGPEditCtrl: GetCurLine is working correctly now in case of the last document line. Version 25.2. Released 1/30/2017 New features Added Visual Studio 2017 RC support (retail product version only). Planner control Added Outlook-style Schedule View (see screenshot). Please take a look at BCGPCalendarDemo example to see this new feature. Dialogs 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. Grid control New methods InsertFirstSubItem, InsertLastSubItem allow to insert sub-row at the specific position in a grid. The wait cursor can be enabled/disabled now - new methods EnableWaitCursor, IsWaitCursorEnabled were added. Added horizontal auto-scrolling while dragging the grid header items. Controls CBCGPButton: added tooltip description (see screenshot). CBCGPButton::SetTooltip has a new optional parameter 'LPCTSTR lpszToolTipDescription' and new method CBCGPButton::GetTooltipDescription was added. CBCGPCalendar: added shadow to drop-down calendar window (see screenshot). CBCGPListBox: a color bar width can be specified by calling a new method 'SetColorBarWidth'. Miscellaneous Visual containers and controls: scrollbar buttons have highlighted state now. CBCGPVisualScrollBarColorTheme has a new 'm_brButtonHighlighted' member. min and max macros are no longer used in the product header files. DB Grids: the column widths are DPI-scaled now. Examples and samples: BCGPCalendarDemo: demonstrates new Schedule View. ProgressDialogDemo: shows how to create a progress dialog with custom progress bar control. Fixes: CBCGPCalendar: fixed day labels width problem when control has a custom font. CBCGPChartLegendVisualObject: fixed some layout problems. CBCGPDateTimeCtrl: fixed bug with a border redrawing when control's auto-size is off. CBCGPButton: fixed bug with moving focus when user presses control acceleration key. Gantt chart: fixed bug with synchronization of the vertical scrolling between left-side grid and chart. CBCGPEditCtrl: fixed bug with line markers. Now offset related data is updated correctly on inserting or removing the text. CBCGPEditCtrl: control border size is calculated correctly now upon window style changing. Grid control: fixed some issues with multiline rows that created by SetLinesNumber or CreateMultiLineRow methods. Planner control: fixed some problems with calendar print/print preview. Version 25.1. Released 11/30/2016 New Features: Chart Control 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. 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): EBT_SEM_SE - Standard error of the mean based on a sample of the population EBT_SEM_SD - Standard error of the mean based on the entire population EBT_STD_S - Standard deviation based on a sample of the population (corrected sample standard deviation) EBT_STD_P - Standard deviation based on the entire population EBT_FIXED - Fixed value for each data point EBT_PERCENT – Fixed percent for each data point EBT_DIFF – Difference between previous and current data points 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. 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. The data points tooltip content can be customized now by overriding new CBCGPChartVisualObject virtual methods: OnFormatDataPointTooltip OnFormatDataPointTooltipDescription New attribute BCGPChartDataLabelOptions::m_bOverlapsArea specifies whether a data label can be drawn outside the chart area. Explorer-style toolbar 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'. Added optional 'Up' button. CBCGPExplorerToolBar::EnableNavigationButtons has a new optional parameter 'UINT nUpID'. CBCGPExplorerToolBar::EnableNavigationButtons can be called several times to change the explorer bar appearance and functionality at runtime. Visual Container and controls 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 The Visual Container Object resizing can be limited to specific sides. The following new values can be added to the object editing flags: BCGP_EDIT_SIZE_NO_LEFT BCGP_EDIT_SIZE_NO_RIGHT BCGP_EDIT_SIZE_NO_TOP BCGP_EDIT_SIZE_NO_BOTTOM Combo Box control 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. 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. Breadcrumb control 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. Improved control appearance in some Visual Managers (see screenshot). New BreadcrumbDemo sample demonstrates these new features. WinUI Tiles control Implemented Visual Manager-based color theme (see screenshot). SetVisualManagerTheme and IsVisualManagerTheme methods were added to CBCGPWinUITiles class. WinUI Tile image vertical alignment: SetImageVertAlign and GetImageVertAlign methods were added to CBCGPWinUITile class. Grid control 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). New virtual CBCGPGridCtrl::GetRowNumber allows to customize row numbering. New method CBCGPGridColumnsInfoEx::AddHeaderItem returns a pointer to a header item, that allows to customize multiline and merged headers. Extended support for the password characters in in-place editor with CBCGPEdit::BrowseMode_PasswordPreview flag. Controls 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). 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. CBCGPEdit::EnablePasswordPreview has a new, optional parameter 'bAllowEditingInPreview'. Miscellaneous New parameter 'bShowCaret' of CBCGPEditCtrl::SetReadOnly method allows to display the caret in read-only mode. CBCGPPropertySheet::SetLook has a new optional parameter 'bSimplifiedBackIcon' specifying whether the Aero Wizard "Back" button has a simplified (arrow only) look. Examples and samples: BCGPChartExample: demonstrates new box plot and error bars. In addition, you can see charts in the dark visual themes. BCGPDigitalDashboard: demonstrates export to bitmap visual container with embedded controls. BCGPGaugesDemo: demonstrates new Visual Manager gauge themes. BCGPGridExample: demonstrates export to HTML embedded chart objects (see "Merged Cells" and "Sparkline" views). BreadcrumbDemo (see screenshot): this new sample application demonstrates breadcrumb control new and existing features. ComboBoxDemo: demonstrates combo box item icons and indentations. Fixes: Breadcrumb control: correctly sub-classes disabled (with WS_DISABLED style) window. CBCGPChartStockSeries::OnGetDataPointTooltip and CBCGPChartVisualObject::OnGetToolTip load a format string from the localized resource DLL now. BCGPMessageBox: fixed font selection bug. CBCGPRadialMenuObject doesn't "eat" mouse clicks now when user is frequently double-clicking the left button. Visual Container: fixed bug with inaccurate hit-testing of the selected object resizing anchors. Combo box control: the control height is correctly calculated now in some DPI modes. CBCGPEditCtrl: fixed bug with syntax coloring for escape sequences like \" inside a text constants. CBCGPEditCtrl: fixed a displayed character for hidden whitespaces like TAB and SPACE in Far-Eastern languages. CBCGPEditCtrl: fixed some scrolling issues in editor. 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. Fixed underline font in CBCGPGridURLItem. Grid control: fixed some problems with MSAA. Grid control: fixed horizontal image alignment in the header of the grid control. 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: Grid and Report controls 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: Multiple columns with ability to sort node sub-items. Header control. Item or column check boxes. Visual themes support. Grid or tree look. Please take a look at new sample TreeCtrlDemo to see this control in action. 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. Added ability to enable/disable grid "alternate" rows: EnableAlternateRows and IsAlternateRowsEnabled methods were added. Calendar and Planner By default the calendar bar uses the system locale to obtain a first day of week and first week of year. Now the planner built-in icons are automatically scaled according to current DPI. Hotspot image control 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. 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. 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. Miscellaneous 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. 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. CBCGPDrawManager methods ColorMakeLighter and ColorMakeDarker have a new optional parameter 'bKeepSaturation' 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. CBCGPTextFormat has a new "End Ellipsis" attribute: SetEndEllipsis/IsEndEllipsis methods were added. Examples and samples: TreeCtrlDemo: this new sample demonstrates how to use CBCGPTreeCtrlEx. BCGPGridExample: demonstrates a new hierarchical grid features (see "Grid" -> "Tree Dialog" menu item) and improved color themes. HotSpotDemo: demonstrates image DPI scaling and item tooltips. TagCloudDemo: demonstrates "underline highlighted tag" feature. Fixes: CBCGPComboBox: fixed some bugs with the item height calculation. CBCGPDurationCtrl: embedded spin control width is calculated according to current DPI now. CBCGPEdit: fixed bug with calculation of the browse button location when control has ES_MULTILINE style. CBCGPListBox: fixed bug with list box item height when pin items are enabled and current DPI is 200% or greater. CBCGPPropertyPage correctly processes dynamic info tip mouse clicks when "DragClientArea" is enabled. CBCGPPropertySheet::RenamePage doesn't loss the icon associated with page in "List Box" mode. CBCGPRadialMenuObject correctly processes mouse double-click event now. Grid control: a header supports HDF_BITMAP_ON_RIGHT align flag now. Fixed header alignment of a text label with a header image. Grid control: empty groups are now hidden if all content is filtered-out. The grid tooltip is displayed correctly now if control is located on the popup dialog. Grid control: fixed the minimal size of the Field Chooser window. Version 24.4. Released 03/02/2016 New Features: Dialogs and Forms 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. 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. 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. CBCGPDialog::EnableLoadWindowPlacement and CBCGPPropertySheet::EnableLoadWindowPlacement have a new, optional parameter 'LPCTSTR szWindowPlacementProfile = NULL'. This parameter specifies a registry branch where window placement is saved. 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. CBCGPProgressDlg::SetPos has a new, optional parameter 'BOOL bWaitForMessages = TRUE'. This parameter specifies whether the dialog should wait for the Windows messages. Chart control 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. 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. Grid and Report controls 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. 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. New virtual method CBCGPGridCtrl::GetRegSectionPath allows to customize the path in registry for the grid settings. New virtual method CBCGPGridCtrl::OnGetHeaderItemTextColor allows to customize text color for the header items in the grid control. Miscellaneous The product documentation is fully revised now: all help files are located at our new Help site: https://help.bcgsoft.com/ . You are still able to download .CHM files to read the documentation offline. 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. 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. CBCGPDateTimeCtrl::SetEmptyDateLabel allows to display some text label when date/time picker is unchecked. CBCGPRotationObject::EnableFlatIcons enables/disables rotation menu flat icons (see screenshot). CBCGPToolBoxPage: added user-defined values associated with toolbox buttons: CBCGPToolBoxPage::SetButtonUserData and CBCGPToolBoxPage::GetButtonUserData methods were added. New method 'CBCGPVisualContainer::RemoveSelected' removes currently selected objects from the visual container. Examples and samples: BCGPChartExample: illustrates new color themes and rotation control with flat icons. DateTimeCtrl: demonstrates unchecked date/time label and calendar's first week of year. BCGPGridExample: demonstrates a custom color list grid item (see screenshot) and 2 buttons custom grid item. EditBoxDemo: demonstrates improved control info tips and password preview mode. PropSheetDemo: demonstrates how to add a custom background image to the property page client area. ResizableForm: property sheet resize box. Fixes: CBCGPButton: fixed redrawing bug when control receives the focus. CBCGPCalculator::UpdateBuffer correctly parses an empty buffer now. CBCGPPieChartImpl: fixed 3D pie/doughnut rendering bug in some pie angles. CBCGPPieChartImpl: improved data labels positions calculation. CBCGPChartInterLineColoringEffect: fixed some problems caused by "asynchrony" (with different start and end positions) series. CBCGPChartInterLineColoringEffect: improved polar chart rendering. CBCGPCircularGaugeImpl::HitTestValue correctly processes reversed scale (where start is greater than finish) now. CBCGPDiagramShape::OnDraw renders elliptical shape using Thickness property now. CBCGPLinearGaugeImpl: fixed some bugs with reversed (where start is greater than finish) scales. CBCGPEdit: fixed bug with changing control mode before window creating (e.g, in the parent dialog constructor). CBCGPEditCtrl: a mouse wheel message is passed to the active IntelliSense window now. CBCGPEditCtrl: shift + left mouse click correctly changes the selection range now. 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). Grid control: fixed some bugs with in-place edit/browse button location in case of the merged cells. Grid control: fixed some color issues in the various visual managers. CBCGPListBox: fixed bug with check box/radio button/color bar size in some screen resolutions. CBCGPMessageBox: fixed bug with a minimal window width calculation. Version 24.30. Released 10/15/2015 New Features: 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. Grid and Report controls Added tri-state checkbox support. To enable it, please call new method CBCGPGridCheckItem::Enable3StateCheckBox. Improved accessibility support: set new member CBCGPGridCtrl::m_bAccGridItemValueAsName to TRUE to make the Grid work with screen readers (such as Narrator) more correct. Miscellaneous Combo box: 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. 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. Added CBS_SIMPLE style support (see screenshot). 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. 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. CBCGPButton: added new member 'BOOL m_bNotifyCommandOnDblClick'. Set it to FALSE if you wish to prevent BN_CLICKED command notification upon mouse double-click. 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. Examples and samples: BCGPChartExample: illustrates new style info tips. EditBoxDemo: added control info tips. Fixes: Combo box: fixed some bugs in RTL mode. Combo box: fixed bug with unwanted closing dropdown list when user clicks the scrollbar (in some visual themes). A minimized modeless dialog is correctly rendered now. CBCGPStatic control supports SS_CENTERIMAGE style now. CBCGPListBox::DeleteItem correctly deletes list box item if LBS_OWNERDRAW* is not specified. Grid control: fixed some drawing problems in right-aligned grid cells. Advanced Edit control: fixed some minor problems in control vertical scrolling. Version 24.20. Released 08/03/2015 New Features: 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. 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. Planner and Calendar controls Implemented MS Office 2013/2016-style look (see screenshot). 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. Grid and Report controls 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. New method CBCGPGridCtrl::GetColumnSortingPriority returns columns order in the multiple columns sorting mode. New method SetExportRangeSkipList allows to customize exporting to CSV and exporting to HTML features. 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. CBCGPGridCheckItem may draw both an image and a check box now. Improved appearance of the built-in "Filter" dialog pane. Miscellaneous CBCGPButton: added support for the drawing non-focused, default push button. CBCGPGestureBase: added OnGestureEventBegin and OnGestureEventEnd virtual methods. CBCGPTextFormat: added SetFontWeight method. CBCGPMessageBox: the content layout of the message box with header has been improved in this version. Examples and samples: BCGPGridExample: new visual themes and filtering. BCGPCalendarDemo: illustrates new Office 2013/2016-style calendar. Fixes: Fixed bug with displaying CBCGPCalculatorPopup windows when the system menu animation is disabled. CBCGPCalendar correctly shows dates range if SetMinDate/SetMaxDate methods were called for this control or date/time picker. Fixed bug with hiding dialog shadow in CBCGPDlgImpl::OnActivate method. Dialogs and Frames with owner-draw caption: the caption height is calculated correctly now if the window has WS_EX_TOOLWINDOW style. 3D Surface Chart: fixed some rendering bugs. Linear Gauge: fixed some problems with drawing scales in case of the small ranges and steps. Grid control: fixed some rendering bugs in high DPI. Grid control: fixed bug with auto-complete cell using keyboard. Version 24.10. Released 04/20/2015 New Features: 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. Added Visual Studio 2015 Technical Preview project files (the integration with VS 2015 environment will be added later, after VS 2015 release). Grid and Report controls 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. 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. New method CBCGPGridCtrl::SetColumnSortingPriority specifies columns order in the multiple columns sorting mode. Added BCGM_CHANGEVISUALMANAGER message handler: the Grid color theme is automatically updated now upon application theme changing. Visual container and objects Implemented auto-scroll when selected container object is being dragged. CBCGPVisualScrollBar: added BCGP_VISUAL_SCROLLBAR_VISUAL_MANAGER style (see screenshot). Dialogs 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. 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. Miscellaneous CBCGPButton and CBCGPURLLinkButton controls are "touch-friendly" now: Check box/radio button size is scaled according to control font size. The underlined text has the same size as regular. New method 'CBCGPDrawManager::DrawCheckMark' draws a check mark inside the given box. CBCGPEdit: added ability to disable right-side button in read-only mode. The following methods were added: SetDisableBrowseButtonInReadOnlyMode IsDisableBrowseButtonInReadOnlyMode IsBrowseButtonEnabled (virtual) CBCGPListBox: new virtual method 'OnFillItem' allows changing specific item background. Examples and samples: Added new sample ExpandDialogDemo (see screenshot): illustrates how to add expandable area to the dialog box. BCGPGridExample: demonstrates how to export grid data to CSV format. MessageBoxDemo: demonstrates message header and buttons custom font. Fixes: CBCGPListBox: fixed bug with adding strings to non-owner-draw control. CBCGPPropertySheet: fixed bug with adding pages group caption in the list mode. CBCGPStatic correctly displays icon on the "aero" background. CBCGPTextGaugeImpl: fixed problem with "ticker" mode in GDI graphics manager (Windows XP). CBCGPURLLinkButton: fixed bug with displaying control on the "aero" background. CBCGPGridCtrl::OnHeaderColumnRClick is always called now when user clicks a grid header by the mouse right button. Fixed memory leak in CBCGPGridCtrl::DoSetSelection (it was in case of multiple selection), CBCGPGridCtrl::ShowDragInsertMarker works correctly now when user drop some content into the empty grid. Version 24.0. Released 03/05/2015 New Features: Chart Control 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). Implemented new chart category BCGPChartDoughnutNested (see screenshot). 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. List Box Item color bar support (see screenshot): SetItemColorBar and GetItemBarColor methods were added. Item custom icons: new methods SetItemIcon and GetItemIcon were added. Added ability to specify the custom items height: SetItemExtraHeight/GetItemExtraHeight were added. The following new virtual methods allow to customize the control appearance: OnFillBackground OnDrawItemDescription OnDrawItemColorBar Miscellaneous 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. Edit control IntelliSense window is themed now (see screenshot). GetIntelliSenseFillColor and GetIntelliSenseTextColor virtual methods were added to CBCGPVisualManager class. CBCGPStaticLayout::RemoveAnchor method was added. New method CBCGPCheckListBox::EnableCheck allows to enable/disable check box of the specific checked list item. New New method CBCGPPropertyPage::SetPageIcon(HICON hIcon) assigns the icon to specific property page. CBCGPSwitchImpl: added disable control support. CBCGPWinUITiles: added icons auto-scaling by DPI. Call new method CBCGPWinUITiles::EnableIconsScaleByDPI to enable/disable this feature. CBCGPGridDateTimeItem now supports seconds (CBCGPDateTimeCtrl::DTM_SECONDS flag is used). 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. Examples and samples: Added new sample EditorMarkers (see screenshot): illustrates how to add custom markers and colored areas to the edit control. BCGPCalendarDemo: demonstrates monthly view week bar. BCGPChartExample: demonstrates new color themes and nested doughnut chart. ListBoxDemo: shows how to add color bars and disable check boxes./li> WinUITilesDemo: shows icons auto-scaling. Fixes: CBCGPButton: fixed check box/radio button rendering bug in high DPI mode. CBCGPButton::get_accState returns correct value in case of 3-state check box. Chart: the chart title position is correctly calculated according to the title format text alignment. Chart: the legend located in front of the chart is located over the chart objects and table now. CBCGPEditCtrl: fixed bug with the remaining selection redrawing after block expanding/collapsing. Gauge: fixed bug with setting scale value outside the range in the gauge interactive mode. Fixed some bugs in owner-draw CBCGPListBox without LBS_HASSTRINGS style. Grid control: fixed bug with drawing filter bar. CBCGPMessageBox supports MB_TOPMOST and MB_SETFOREGROUND flags now. Version 23.2. Released 11/24/2014 New Features: All product functionalities were thoroughly tested under Windows 10 preview. We confirm that our product is ready for use in this new operating system. Chart and Gauges 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. New virtual method 'CBCGPChartVisualObject::OnDrawChartSeriesName' allows to customize chart series name appearance. 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. Miscellaneous CBCGPMenuButton: implemented popup dialogs support (see screenshot). The following new methods were added to CBCGPMenuButton class: EnablePopupDialog OnBeforeShowPopupDlg ClosePopupDlg CBCGPWinUITiles: added ability to specify custom text formats. The following new methods were added: SetCaptionTextFormat SetGroupCaptionTextFormat SetCaptionButtonTextFormat SetHeaderTextFormat SetNameTextFormat CBCGPListBox: implemented item tooltip support. SetItemToolTip, GetItemToolTip and GetItemToolTipDescription methods were added to this class. ListBoxDemo sample application demonstrates this new feature. Added a new optional parameter 'LPCTSTR lpszInitialFolder' to CBCGPEdit::EnableFileBrowseButton method. New attribute 'CBCGPGraphicsManagerGDI::m_bExtendedMappingMode' allows working with non-MM_TEXT mapping mode. CBCGPPlannerManagerCtrl::SetImages has a new optional parameter 'BOOL bAutoScale'. Set it to TRUE to scale image in the high DPI mode. CBCGPSliderCtrl::SetSelectionColor specifies the slider control selection color. CBCGPStatic control supports SS_ENDELLIPSIS, SS_PATHELLIPSIS and SS_WORDELLIPSIS styles now. CBCGPBaseVisualObject has a new virtual method 'OnAnimationFinished'. Examples and samples: BCGPChartExample: added multiple pie charts demonstration. BCGPGaugesDemo: added static gauge in "ticker" mode and radial menu animation demonstrations. ListBoxDemo: shows how to add custom tooltip to the list box items. Fixes: Fixed bug in CBCGPChartLongSeries::OnCalcScreenPoints when scatter mode is on. CBCGPDateTimeCtrl doesn't change the time when user selects a new date from the drop-down calendar. CBCGPExplorerToolBar correctly scales navigation icons in high DPI mode. Fixed bug in rendering right-aligned text in CBCGPListBox with LBS_USETABSTOPS style. CBCGPMessageBox: the check box has the same font as message box. Grid control: fixed Filter Bar drawing problems. Grid control: disabled selection highlighting of header items in whole row selection mode. Grid control: removed unnecessary horizontal scrolling on mouse click in whole row selection mode. Report Control: fixed even/odd coloring in Preview Area. Version 23.1. Released 09/04/2014 New Features: 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: 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. Accelerate/Decelerate Cubic Linear Smooth Stop Parabolic from Acceleration The animation support was added to the following product components: Chart control (series appearance). Gauges (smooth pointer moving). Page transition manager (used in the property sheet, ribbon backstage view in custom page containers). WinUI Tiles Please run a new sample AnimationManagerDemo to study how to implement your own animation. Visualization. Improved high-DPI support: Added 'ScaleByDPI' scaling helpers to CBCGPGlobalUtils class. CBCGPListBox::SetImageList has a new optional parameter 'BOOL bAutoScale = FALSE'. Set it to TRUE to auto-scale list box images. 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 CBCGPVisualManager class has the following new methods: OnDrawProgressMarqueeDot: draws progress bar marquee dot. GetProgressMarqueeColor: gets progress bar marquee fill color. Our examples/samples and tools have new icons provided by Axialis Software. Grid Control. Improved grid scaling support: a new virtual method CBCGPGridCtrl::OnScaleChanged allows customizing the grid appearance according to current scale (zoom level). CBCGPGridView handles the visual manager changing and automatically updates the grid color theme. Added CBCGPGridCheckItem::Toggle method. Added support of HDF_BITMAP_ON_RIGHT flag in CBCGPGridCtrl::SetColumnAlign. Specify this flag to draw icons at the grid cell right side. Visual Container and Visual Designer. 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. Added basic color theme to CBCGPWndHostVisualObject class: SetColorTheme/GetColorTheme methods allow to set/get 'CBCGPWndHostColors m_Colors' member. Visual Designer allows to specify control run-time class: for example, if you need to use CBCGPGridCtrl-derived class. Added GetScrollOffset method to CBCGPVisualContainer class. Methods CBCGPVisualContainer::AdjustLayout and CBCGPVisualContainer::AdjustScrollBars are virtual now. Visual Designer: added ability to copy/paste property grid groups (such as selected object color theme or layout). Chart Control. 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. CBCGPChartSeries::SetVirtualMode has a new optional parameter 'BOOL bRedraw = TRUE'. Improved color themes with gradient brushes (see screenshot). Improved drawing of the series shadows in the dark color themes. Page Transition Manager Starting from version 23.1, the page transition manager is based on new animation manager: SetPageTransitionEffect has new optional parameters: BCGPAnimationType animationType: specifies the animation type such as smooth stop, accelerate/decelerate or Cubic. CBCGPAnimationManagerOptions* pAnimationOptions: additional animation options. GetAnimationType: returns the animation type. GetAnimationOptions: returns the animation options. 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. Property Sheet 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. CBCGPPropertySheet::EnablePageTransitionEffect has 2 new optional parameters: BCGPAnimationType animationType: page transition type CBCGPAnimationManagerOptions* pAnimationOptions: animation options Miscellaneous. 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. CBCGPButton: implemented support of images used in control pressed state. CBCGPButton::SetImage and CBCGPButton::SetCheckedImage methods have a new optional parameter: IconPressed. CBCGPCalendar: added custom color theme support. SetCustomColors, GetColors and IsCustomColors methods were added to this class. CBCGPCircularGaugeImpl: improved algorithm of drawing tick mark labels (see screenshot). 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. Implemented ability to customize edge size in brush 'BCGP_GRADIENT_BEVEL' gradient type: CBCGPBrush has SetBevelSize/GetBevelSize new attribute. CBCGPEditCtrl::SetLineNumbersMargin has a new, optional parameter 'int nExtraMarginWidth = 0'. You can specify a text position inside line numbers area. Method CBCGPEditCtrl::DrawColorLine is virtual now. Method CBCGPStatic::DoPaint method is virtual now. Examples and Samples: New sample AnimationDemo (see screenshot) demonstrates how to add animation support to CWnd-derived class. BCGPChartExample demonstrates chart series animation (see screenshot). BCGPDigitalDashboard: "Site Statistics" view includes a custom Calendar control (see screenshot). ProgressDialogDemo illustrates new progress marquee styles. PropSheetDemo: added page transition options. RibbonGadgets demonstrates how to add Ribbon combo box control with a custom drop-down dialog. Fixes: CBCGPGridCtrl: fixed bug with printing an empty grid. CBCGPGridCtrl: CBCGPDateTimeCtrl embedded control sends update notification to the parent grid now. CBCGPGridCtrl: improved filter bar rendering in the Visual Manager grid theme. CBCGPGridCtrl: fixed bug with positioning of the buddy spin control in the grid cell. Diagram: fixed bug with wrong anchors of the diagram connectors. CBCGPBaseVisualCtrl: fixed info tip positioning bug. CBCGPBaseVisualCtrl::OnNcPaint: the container scroll bars are correctly rendered now under some legacy OSs such as Window XP. CBCGPBaseVisualObject::Redraw: fixed bug with displaying controls in the scrolled container. Version 23.0. Released 05/21/2014 New Features: Implemented Digital Dashboards support (see screenshot). The following new and updated product features provide easy and efficient way to create fully-functional interactive digital dashboards: Visual Designer: added Chart, Grid, Edit box and container scroll bars support (see screenshot). Added new class CBCGPWndHostVisualObject. This is a base class of any custom windows hosted inside the visual container. 2 new classes CBCGPGridVisualObject and CBCGPEditVisualObject (both derived from CBCGPWndHostVisualObject) provide a simple way to add grid and edit controls to the visual container. CBCGPVisualScrollBar: added scrollbar styles (BCGP_VISUAL_SCROLLBAR_FLAT, BCGP_VISUAL_SCROLLBAR_FLAT_ROUNDED, BCGP_VISUAL_SCROLLBAR_3D and BCGP_VISUAL_SCROLLBAR_3D_ROUNDED) CBCGPVisualContainer changes: EnableScrollBars has a new optional parameter 'BCGP_VISUAL_SCROLLBAR_STYLE style = CBCGPVisualScrollBar::BCGP_VISUAL_SCROLLBAR_FLAT' 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. New virtual methods OnAfterCreateWnd and OnBeforeDestroyWnd were added. Please run a new example BCGPDigitalDashboard to see these features in action. Grid Control. Implemented Grid scaling (see screenshot). The following new methods and notifications were added to CBCGPGridCtrl class: SetScalingRange: specify the grid scaling range GetMinScale and GetMaxScale: obtain the grid scaling range SetScale: set the current grid scale GetScale: get the grid scale BCGM_GRID_SCALE_CHANGED: notify owner about grid scale changing Popup dialogs support (see screenshot). A new class CBCGPGridPopupDlgItem provides a way to show a popup dialog associated with the grid cell. Added Grid scrollbars custom colors support (see screenshot). Please take a look at BCGPGridExample demonstration program to see these features in action. Edit box. 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. 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. 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. Chart Control. 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. Method 'CBCGPChartVisualObject::OnCreateChartSeries' is virtual now. Miscellaneous. CBCGPWinUITiles: implemented scrollbar style support - new methods SetScrollBarStyle/GetScrollBarStyle were added. Diagram: added diagram shape parts support. CBCGPDiagramVisualObject has a new enumerator 'Parts' and 3 new methods: HitTestPart, GetPartRect and GetPartTextData. Added custom font support to CBCGPCalendar window. Added font scaling support to CBCGPTextFormat. Added ability to specify the group text color: CBCGPGroup has a new public member 'm_clrText'. New virtual method CBCGPPropertySheet::OnDrawPageIcon allows to customize the property page icon appearance. CBCGPScrollBar: added custom color theme support. Please call a new method 'SetColorTheme' to specify your custom color theme and 'GetColorTheme' to obtain the theme. CBCGPSliderCtrl: implemented TBS_ENABLESELRANGE and TBS_NOTHUMB styles support. Examples and Samples: New example BCGPDigitalDashboard (see screenshot) illustrates how to create interactive digital dashboards with Grids, Charts, Gauges and other controls. New sample GesturesDemo (see screenshot) demonstrates how to add Windows gesture support to CWnd-derived class. BCGPChartExample demonstrates new Info Tip object and how to use external scroll bars along with the chart (CChartHugeDataView class). BCGPGridExample illustrates grid popup dialogs, grid scaling and subscript/superscript grid items. EditBoxDemo sample illustrates edit box custom colors and popup dialogs. WinUITilesDemo: added scrollbar custom color theme demonstration. Fixes: Solved some minor 64 bit-compatibility problems. CBCGPCircularGaugeImpl and CBCGPLinearGaugeImpl: fixed bug with sub-gauge reposition when the parent container was scrolled. CBCGPGraphicsManagerD2D::BeginDraw: solved problem with D2D initialization on some graphics cards. CBCGPListBox: fixed bug with description area height calculation. CBCGPPropertySheet: fixed bug with adding new pages at run-time when window has PropSheetLook_Tabs type and Visual Manager style was specified. CBCGPSliderCtrl correctly handles TBM_SETTICFREQ message now. CBCGPPlannerViewDay: fixed scrolling using ‘Up’ and ‘Down’ keys. Chart: fixed hit-testing bug in the parent container scrolling mode. Grid: fixed bug in multi-line header rendering. Grid: fixed bug with multiple selection of several columns. Diagram: improved drawing of diagram labels. Diagram: fixed label in-place editing bug. Diagram: fixed connection ports drawing bug. Diagram: fixed bug with a scaled image rendering. Version 22.1. Released 01/15/2014 New Features: Grid Control. 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'. 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. Chart Control. 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. 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. Improved tooltip appearance in the Pie, Doughnut and Torus charts (see screenshot). 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. Visual Container: Implemented gesture pan event support in CBCGPVisualContainer. Now you can easily scroll visual containers on the touch-screen devices. Added ability to export full container content: the following CBCGPVisualContainer methods have a new, optional parameter 'BOOL bFullImage = FALSE': ExportToImage ExportToBitmap CopyToClipboard ExportToFile In addition, the following new methods were added to CBCGPVisualContainerCtrl class: CopyFullImageToClipboard ExportFullImageToFile Miscellaneous: Property Sheet: new method CBCGPPropertySheet::RenamePage allows to modify a specific page name at run-time. Gantt Chart: added Visual Manager-style support (see screenshot). New method 'CBCGPGanttControl::SetVisualManagerStyle' allows to specify the visual manager theme. 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. List box control supports now LBS_USETABSTOPS control style. Graphics Manager: new method CBCGPTextFormat::SetFontStyle allows to modify font style (e.g., Italic) at run-time. Date/Time picker and Calendar controls: added mouse wheel handling. Examples and Samples: 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). BCGPChartExample demonstrates how to create Chart Data Tables, smaller Pie slices grouping and new visual themes. BCGPGanttDemo example demonstrates Gantt Chart in the Visual Manager theme. Fixes: Chart control: CBCGPChartHistoricalLineSeries::EnableHistoryMode changes historical line data history depth. CBCGPListBox correctly calculates caption and separator items height if control has LBS_OWNERDRAWVARIABLE style. CBCGPPropList: fixed bug with clipping property group name. CBCGPPropList::OnMouseWheel doesn't perform unnecessary grid scrolling if property dialog is opened. 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: The product was fully tested under Windows 8.1. The product is compatible with Visual Studio 2013. The product evaluation version includes binary files required for this Visual Studio now. 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. WinUITiles: Implemented tiles drag and drop. The following new methods were added to CBCGPWinUITiles class: EnableTilesDragAndDrop IsTilesDragAndDropEnabled Load/Save tiles state. Call CBCGPWinUITiles::LoadState to load tiles state and CBCGPWinUITiles::SaveState to save it. Implemented group custom background and border (see screenshot). CBCGPWinUITiles ::SetGroupCaption has the following new optional parameters: brGroupFill: group background brush brGroupOutline: group outline brush 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. Grid: Implemented MS Office-style Filter Menu (see screenshot). The following new methods were added to CBCGPGridCtrl class: 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. ShowFilterMenu: display a filter menu for the specific column. Allows to specify custom filter data and filter string list. CreateFilter: override this method to create your own, CBCGPGridFilter-derived grid filter. 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). Added BCGM_GRID_COLUMN_BTN_CLICK custom message. When user clicks on the header button, grid sends this message to the owner window. Added support for VT_I8 and VT_UI8 variant types (VS 2008 and later). 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. Controls: 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. Implemented disabled items support in CBCGPListBox control: 'Enable' and 'IsEnabled' methods were added. 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. CBCGPSliderCtrl supports tick marks now (see screenshot) Graphics Manager: New method CBCGPColor::ToString converts the color to a human-readable string. CBCGPTextFormat::SetFontFamily allows to modify the font family when a text object is already created, Miscellaneous: New class CBCGPGestureBase simplifies adding touch/gesture support to any CWnd-derived class. CBCGPTagCloud control has keyboard navigation support now. 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. Gauges: implemented Microsoft Active Accessibility support. 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. Examples and Samples: All Examples and Samples are in UNICODE now (VS 2010 or higher). New sample application EditBoxDemo shows how to create edit box control in the various modes (see screenshot). ResizableForm sample illustrates how to create property sheet control in the FormView (see screenshot). Fixes: Added WM_PRINTCLIENT message handling to the most of our controls. This fixes bug with control rendering in the window animation and preview. CBCGPHeaderCtrl correctly supports HDS_FILTERBAR style. CBCGPGroup control correctly processes WM_GETFONT and WM_SETFONT messages. CBCGPGanttChart control correctly processes WM_GETFONT and WM_SETFONT messages. Fixed COleDataSource releasing bug: all COleDataSource objects are created on the heap and released using InternalRelease method. CBCGPButton: fixed bug with a text default alignment in case of checkbox/radio button with BS_PUSHLIKE control style. Chart control: the chart doesn't show data labels for the empty data points now. CBCGPPropertySheetCtrl is correctly supports controls layout now. CBCGPPropertySheet: page navigation listbox control (used in PropSheetLook_List mode) is created with the vertical scroll bar now. 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: The product was fully tested under Windows 8.1 Preview. The product is compatible with Visual Studio 2013 Preview (retail version only). WinUITiles: The tile can be crates with the following sizes (see screenshot): BCGP_TILE_REGULAR: square BCGP_TILE_WIDE: double width, single height. 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. New method CBCGPWinUITiles::Remove allows to remove a specific tile, caption or caption button. Grid: Added ability to customize Field Chooser empty content label. The following new methods were added to CBCGPGridCtrl class: SetFieldChooserEmptyContentLabel GetFieldChooserEmptyContentLabel Added Visual Theme support in Field Chooser window (see screenshot ): ShowColumnsChooser has a new optional parameter 'BOOL bVisualManagerStyle = FALSE' Controls : 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: SetPrompt GetPrompt SetErrorMessage GetErrorMessage Implemented seconds editing in CBCGPDateTimeCtrl (see screenshot ): DTM_SECONDS flag was added to the control properties. Gauge and Chart controls : Added scatter mode support in long-data series (see screenshot ). CBCGPChartLongSeries has a following new methods: SetScatterMode IsScatterMode GetScatterPointSize Chart: CBCGPChartTransitionFormula has a new built-in type - TT_DIFF_ABS. Use this type to absolute difference between the series. CBCGPSwitchImpl::SetOn has a new, optional parameter 'BOOL bRedraw = FALSE'. Set this parameter to TRUE to immediately redraw the control after the state changing. CBCGPSwitchImpl: implemented ability to specify custom images (see screenshot ). The following new methods were added: SetGutterImage GetGutterImage SetThumbImage GetThumbImage CBCGPSwitchImpl: added labels support. The following new methods were added: EnableOnOffLabels GetLabel SetLabel GetLabelTextFormat SetLabelTextFormat New class CBCGPImageGaugeCtrl provides you with a simple way to create an image control. The window simply hosts CBCGPImageGaugeImpl object. Graphics Manager: 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. CBCGPTextFormat has a new method 'ExportToLogFont' - use it to export the text format data to LOGFONT structure Added method CBCGPGraphicsManager::DrawScatter that renders a large amount of points at once. Fixes: Button control doesn't draw a focus rectangle if ODS_NOFOCUSRECT state is specified. Fixed problem with drawing check boxes/radio buttons with center/right text alignments. Pyramid Chart: fixed problem with incorrect gap calculation in the Chart print mode. Bubble Chart: the data labels are correctly positioned now in the Chart print mode. Property Sheet: fixed bug with height of the property sheet in 'PropSheetLook_Pointer' mode. Property Sheet: fixed problem in Wizard 97 mode (if visual theme is activated). Radial Menu: fixed rendering bug in Popup Mode (caused by IE10 update) Edit control: fixed bug with loading UNICODE files. Edit control: CBCGPBaseIntelliSenseLB::UpdateColors doesn't change the global colors now. Edit control: BCGP_EDIT_SYNTAX_COLOR structure is exported now. Tree control: fixed some control rendering bugs under specific Visual Managers. Grid control: grid color item with a default (without value) color is rendered correctly now. Grid control: fixed bug with Filter Bar localization. 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: 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: OnGestureEventZoom OnGestureEventPan OnGestureEventRotate OnGestureEventTwoFingerTap OnGestureEventPressAndTap ResetGestureOptions GetGestureConfig So, using our library, you can make your product fully compatible with Microsoft Surface and other touch-enabled devices! WinUI Tiles (see screenshot ): 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. Added keyboard navigation support. A new method CBCGPWinUITiles:: GetCurSel returns a currently selected tile and CBCGPWinUITiles:: SetCurSel allows to change the current selection. 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. 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. 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. Implemented tiles scrollbar custom color theme: CBCGPWinUITiles:: SetScrollBarColorTheme allows to modify scrollbar color theme and CBCGPWinUITiles::GetScrollBarColorTheme returns the current theme. 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. Chart Control: 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. Implemented Pie and Polar charts interactivity. Diagram control: A diagram connector has line thickness and line style attributes now: SetThickness, GetThickness, SetStrokeStyle and GetStrokeStyle access methods were added to CBCGPDiagramConnector class. Added ability to specify a custom text format in Diagram Text Object: CBCGPDiagramTextDataObject::SetDefaultTextFormat was added. Graphics Manager: Added 'Underline' and 'Strikethrough' attributes to CBCGPTextFormat class. Also, we've updated CBCGPTextFormatDlg for changing these attributes (see screenshot ). Implemented luminosity compare in CBCGPColor clas: CompareWith method and '<', '<=', '>', '>=' operators were added. Added 'Resize' method to CBCGPImage class. 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. Push Button: 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. 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). Gauges: 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. Added new tick mark style 'BCGP_TICKMARK_TRIANGLE_INV' - "inverted" triangle tick mark (see screenshot ). Implemented ability to specify minor tick mark relative position: SetMinorTickMarkPosition and GetMinorTickMarkPosition methods were added to CBCGPGaugeImpl class. New SetScaleTickMarkOutlineBrush/GetScaleTickMarkOutlineBrush CBCGPGaugeImpl class methods allow to specify/obtain tick mark outline brush. Added 'DefaultDrawFlags' attribute to CBCGPStaticGaugeImpl class. Visual Container: Implemented scroll bars custom color theme: new optional parameter 'CBCGPVisualScrollBarColorTheme* pColorTheme = NULL' was added to CBCGPVisualContainer::EnableScrollBars method. 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. Miscellaneous: Added user data support in CBCGPGridColumnsInfo class. Please call SetColumnData/ GetColumnData to set/get the user data associated with the specific grid column. 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. Changes in examples and samples: BCGPChartExample: added chart shadows demonstration 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 ). WinUITilesDemo: demonstrates new WinUI Tiles features such as views associated with tile, caption buttons and group Captions (see screenshot ). Fixes: CBCGPGraphicsManagerD2D: WIC Imaging Factory is initialized properly now if the latest Windows SDK is used along with VS 2012 (Windows 7 and Vista only). A skinned check box/radio button doesn't catch VK_RETURN key now. Fixed problem with rendering CBCGPProgressCtrl created with PBS_VERTICAL style. 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. Fixed problem with CBCGPEdit rendering when control doesn't have WS_BORDER style. CBCGPPropertySheet preserves the selected tab/list item if OnKillActive method of the active page has returned FALSE. Chart Control: fixed bug with positioning of the 3D sides upon specific series gap values. CBCGPRadialMenuObject is correctly rendered now when display high contrast mode is active. CBCGPToolbarDateTimeCtrl class is DPI-aware now. CBCGPDrawManager::ColorMakeLighter correctly works now with very dark color (which close to black). Version 19.0. Released 10/04/2012 New features: 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. The product is fully tested under Windows 8 release. According to Microsoft request, the name "Metro UI" is not legal anymore, so we made the following changes in the product API: BCGM_ON_CLICK_METRO_UI_TILE -> BCGM_ON_CLICK_WINUI_UI_TILE CBCGPMetroUITile -> CBCGPWinUITile BCGP_METRO_BADGE_GLYPH -> BCGP_WINUI_BADGE_GLYPH BCGP_METRO_IMAGE_EFFECT -> BCGP_WINUI_IMAGE_EFFECT 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: WinUITilesDemo demonstrates now how to create live tiles with Chart control and Circular Gauge (see screenshot). 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. Visual Designer: Added keyboard support: the user is able now to move/resize the gauges/diagram objects using arrow keys. Status bar has 2 new panes: location and size of the currently selected gauge/diagram object (see screenshot). Grid Control: 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. New "Freeze Groups" feature allows to disable horizontal scrolling of groups in the grid control. A new method FreezeGroups was added to CBCGPGridCtrl class. 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 Chart Control: 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. 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. 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. Implemented user-defined data support in CBCGPChartSeries: GetUserData/SetUserData methods were added. Gauges: CBCGPImageGaugeImpl: added image alignment support. SetImageAlign, GetHorizontalAlign and GetVerticalAlign methods were added to this class. 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. CBCGPStaticGaugeImpl:: added fill/outline brush attributes. SetFillBrush/GetFillBrush and SetOutlineBrush/GetOutlineBrush methods were added. CBCGPCircularGaugeImpl has a new helper method: GetSubGaugeByID(UINT nID). Miscellaneous changes : CBCGPPropertySheet: implemented tabs scrolling support in PropSheetLook_Tabs mode: EnableTabsScrolling/ IsTabsScrollingEnabled methods were added. 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. Fixes: Resolved flickering upon tab switching in CBCGPPropertySheet Fixed bug with displaying skinned disabled edit control. Resolved problem with drawing some gauges such as text or digital indicators after container scrolling. Grid control: if EnableFilterBar method was called more than once, a memory leak was occurred. Grid control: improved mouse wheel scrolling behavior. Grid control: fixed drawing bug of checkbox item in some visual themes. Grid control: fixed drawing bug of expand box in HDPI mode. CBCGPMessageBox: fixed bug with closing message box when embedded check box is clicked. Diagram control: fixed scaling bug. Diagram control: fixed bug with a drawing of multi-point connectors. Chart control: CBCGPChartAxis::ValueFromPoint returns a correct value now when the logarithmic scaling is used. Version 18.0. Released 06/27/2012 New features: Added support for Visual Studio 2012 RC . The product was thoroughly tested under this new environment and all tests were passed. The product is fully tested on Windows 8 Release Preview . 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. 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: 3D Line Chart 3D Column Chart 3D Doughnut Chart 3D Funnel Chart 3D Pyramid Chart 2D Stacked Area Chart 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. 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. 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. 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'. Fixes: Chart control: improved 3D charts rendering performance. Chart control: fixed problem with drawing Pyramid chart when all data points have zero value. Chart control: fixed some problems with the small-sized chart layout calculation. Grid control: CBCGPGridCheckItem doesn't change a value when the space button was pressed in the read-only mode. Grid control: collapse/expand buttons of the groups are not scrolled in freeze columns mode. Grid control: Fixed colors in some visual themes. Grid control: fixed scrolling by keyboard. Grid control: CBCGPGridCtrl::GetSelectedItems does not return hidden or filtered items now. CBCGPGridCtrl::IsItemSelected is fixed. 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. Grid control: CBCGPGridCtrl::EnsureVisible is working correctly now. CBCGPButton::UncheckRadioButtonsInGroup doesn't check invisible button now. Radial menu: fixed icon drawing bug. In some cases the icon was drawn "blurred". CBCGPEdit: appearance of the control in the Visual Manager mode has been improved. Fixed some bugs with re-loading recent size and position of the dialogs and property sheets. Fixed bug with nested redrawing in CBCGPCalendar::RecalcLayout method. Diagram: fixed bug with connectors positioning when the diagram scrolling/zooming was performed. Help: fixed style problems in help files for Visual Studio 2005/2008/2010. Version 17.1. Released 04/02/2012 New features: Added support for Visual Studio 11 Beta . The library is fully tested on Windows 8 Consumer Preview operating system. 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). Diagram Control implements new and updates existing features: Added zoom support for diagram, all diagram shapes and connectors support proportional scaling. Improved features for runtime editing of diagram. See new DiagramEditor sample (see screenshot). Implemented copy/paste support for the diagram editors. Added BCGM_DIAGRAM_POS_SIZE_CHANGED event. Added support for drag and drop connectors and shapes in edit mode. Added shapes coloring. The following new shapes properties were added to CBCGPDiagramVisualObject class: GetFillBrush/SetFillBrush GetOutlineBrush/SetOutlineBrush GetShadowBrush/SetShadowBrush Added connectors and connector arrows coloring. The following new properties were added to CBCGPDiagramConnector class: GetOutlineBrush/SetOutlineBrush GetArrowOutlineBrush/SetArrowOutlineBrush GetArrowFillBrush/SetArrowFillBrush Implemented new shape types: Image item - CBCGPDiagramImageObject class Table shape - CBCGPDiagramTableShape class. A new class CBCGPDiagramCustomShape implements custom shapes support. Helper diagram's entity "ConnectionPoints" was renamed to "ConnectionPorts". The method CBCGPDiagramVisualObject::SetTextValue was renamed to CBCGPDiagramVisualObject::SetTextData for consistence. You can see the new features in action in the new sample DiagramEditor and modified example BCGPDiagramDemo. 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. Message Box: 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. 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. Progress Dialog: 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): Improved dialog appearance. Graphics Manager: Added scaling support for the following graphics classes: CBCGPPoint CBCGPRect CBCGPRoundedRect CBCGPEllipse CBCGPGeometry CBCGPTextFormat Implemented printing support: SetPrintInfo/GetPrintInfo methods were added. 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: GetClickAndHoldID GetClickAndHoldRect StartClickAndHold StopClickAndHold 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: SelectAll method was added. Implemented 2 different "hit testing inside selection" behaviors: SetHitTestSelected and IsHitTestSelected methods were added. Added FireSelectionChangedEvent virtual method and BCGM_CONTAINER_SELCHANGED registered message Visual Designer The designer supports now both gauges and diagrams (see screenshot) Implemented multi-selection and element alignment operations. 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. 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. 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. Examples and samples BCGPChartExample has the following additions: Stock chart ("Stock Charts | Stock") demonstrates new StockSeriesType types (line drawn by OHLC and custom values) (see screenshot). Added demonstration of real time stock chart in virtual mode ("Stock Charts | Stock Real Time"). Added "Advanced Features | Smart Data Labels" view, which illustrates the "smart labels" feature. 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: DiagramEditor demonstrates how to edit the Diagram Control. TreeMapDemo: demonstrates new TreeMap control. Fixes: 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. Chart control: fixed problem with label interlacing when axis becomes too small. Pie chart correctly displays very small slices. Chart control: fixed printing (and scaling) issues with axes in "fixed interval" mode. Chart control: fixed printing issues with legend size. Chart control: split axes (when you split an axis to two axes using CBCGPChartAxis::Split) take correct size. Chart control: fixed labeling and zooming issues with date-time axes. Chart control: fixed layout of radar chart. Grid control: fixed bug with alignment of merged cells. Grid control: mouse click was disabled for a grid check item (CBCGPGridCheckItem) in read-only mode Grid control: fixed bug with selection border. 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. Fixed drawing bug in CBCGPListBox when control has a horizontal extent. CBCGPButton doesn't draw unnecessary focus rectangle in some visual managers now. CBCGPComboBox correctly draws drop-down button in all Windows themes now. 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: 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. 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. 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. 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. 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 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. 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' 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. 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: EnablePins HasPins EnableItemDescription HasItemDescriptions SetItemDescription SetItemPinned IsItemPinned ResetPins AddSeparator IsSeparatorItem OnClickPin OnClickItem OnReturnKey Examples and samples BCGPChartExample has the following additions: "Advanced Features | Scale Breaks" illustrates the new "scale breaks" feature. "Large Volume Charts | Huge Data" demonstrates the performance of "optimized long data mode". "Large Volume Charts | Huge Average Data" shows how to add interactive markers to BCGPChartLongData chart. "Large Volume Charts | Virtual Chart" describes the technique required to create virtual charts, where the data is taken from an external source. "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: BCGPDiagramDemo: demonstrates how to use new Diagram Control. PropertyGridMDIDemo: demonstrates new property grid features and how to use the property grid in MDI application. TagCloudDemo: demonstrates new Tag Cloud control. Fixes: CBCGPCircularGaugeCtrl::CreateCustomGauge correctly updates control owner now. Fixed bug with image transparency in CBCGPEdit::SetBrowseButtonImage method. CBCGPGraphicsManagerD2D::DrawText correctly draws text in non-UNICODE applications now. Fixed bug in CBCGPGridCheckItem with SPACE button. Disabled CBCGPGridCheckItem does not modify state of the checkbox on pressing SPACE. Fixed bug in the grid with painting the selection border in virtual mode. Fixed bug in CBCGPGridCtrl::FindRowByData. The second parameter bSearchSubItems is used properly now. Fixed bug with grid item drag and drop. The click at the button inside the grid item does not start dragging now. Fixed bug in CBCGPGridCtrl::SetCurSel with selecting all content. The grid with no selected item processes "SelectAll" command properly now. Radar chart correctly displays categories. 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. 3D charts correctly display axis names (now they are aligned to axes and rotated with chart). Fixed infinite loop in CBCGPChartAxis::ApproximateValue. Fixed incorrect calculation of axis scrollbar thumb. Polar X axis correctly handles ValueFromPoint requests. CBCGPChartCtrl::CreateCustomChart automatically sets an owner of newly created chart visual object. Interline coloring effect is correctly clipped when chart is zoomed in. Chart in history mode does not display empty data point at the last X coordinate. CBCGPChartHistoricalLineSeries displays history from X = 0 (it was 1 in previous version). Version 16.1. Released 10/17/2011 New features: 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. 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. 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) 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 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 Fixes: CBCGPChartAxis::Split correctly splits multiple axes. Fixed problem with appearance of 32 bit images in CBCGPBaseVisualCtrl::OnDrawLayeredPopup under Windows 8. Fixed problem with incorrect circular gauge shape in specific scale angles. Fixed problem with Grid Filter bar drawing in "freeze columns" mode. Now CBCGPButton::m_clrFace is used when a button has a Visual Manager theme. Version 16.0. Released 07/26/2011 New features: Chart Control has been extended with the following new 3D chart types: Column in 3D: "Manhattan" (see screenshot ), regular (clustered), stacked (see screenshot ), 100% stacked, ranged. Surface: "regular" and "level" (see screenshot ). Line in 3D: regular (see screenshot ), stacked, 100% stacked. Area in 3D: regular (see screenshot ), stacked, 100% stacked, ranged (see screenshot ). Bar in 3D: "Manhattan" (see screenshot ), regular (clustered), stacked, ranged and 100% stacked (see screenshot ). 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. 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. 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. BCGM_ON_GAUGE_START_TRACK, BCGM_ON_GAUGE_TRACKBCGM_ON_GAUGE_FINISH_TRACK and BCGM_ON_GAUGE_CANCEL_TRACK registsred messages were added. New structure CBCGPGaugeTrackingData contains gauge tracking data such as last tracking message, screen point and current gauge value. CBCGPLinearGaugePointer has the following new styles: BCGP_GAUGE_NEEDLE_CIRCLE BCGP_GAUGE_NEEDLE_DIAMOND Using these new controls and features you can easily create fully-functional, interactive digital dashboards. Please run BCGPGaugesDemo to see these features in action. Calendar and Planner Added working interval support: CBCGPPlannerManagerCtrl::SetViewHourInterval and CBCGPPlannerManagerCtrl::SetPrintHourInterval method were added. Added ability to customize "Up"/"Down" icons Graphics Manager CBCGPImage can be initialized from HICON and HBITMAP now Added method CBCGPGraphicsManager::DrawBeveledRectangle 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. Fixes: Fixed some problems in Chart Control. Fixed problem with drawing CBCGPBreadcrumb on the DWM aero area. Fixed problem with drawing CBCGPScrollBar on the DWM aero area. Fixed memory/resource leak in graphics manager gradient brush initialization. CBCGPLinearGaugeImpl: fixed some problems with gauge appearance under Windows XP (in GDI mode). Fixed bug with displaying incorrect value in CBCGPCalculator::UpdateDisplay. 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: Chart Control: The following new chart types were added: Ternary Chart (see screenshot) Doughnut Chart (see screenshot) Torus Chart (see screenshot) Added support for logarithmic scales of any base (see screenshot). Added trend line support with the following built-in approximations (see a new class CBCGPChartTrendFormula): Linear Exponential Logarithmic Power Polynomial of order 2 - 6 (see screenshot). 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). Virtual series (see screenshot) support allows to display any custom function on the diagram. "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: CBCGPChartObject CBCGPChartLineObject CBCGPChartRangeObject CBCGPChartTextObject 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. "Chart Effects" feature enables you to add interline coloring effects to a diagram (see screenshot). See new classes CBCGPChartBaseEffect, CBCGPChartInterLineColoringEffect. 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. 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. Added ability to save/load Dialogs and Property Sheets window placements. The following methods have been added: CBCGPDialog::EnableLoadWindowPlacement CBCGPPropertySheet::EnableLoadWindowPlacement Please take a look at ResizableForm sample program to see this feature. Grid additions: 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. Added a new virtual method 'CBCGPGridCtrl::OnAfterInplaceEditCreated which is called right after the in-place edit has been created. Fixes: CBCGPGridCheckItem now can print a check mark. Fixed painting of the right side of the grid header. Fix in CBCGPGridCtrl::OnLButtonUp for disabled grid items. Fixed a problem with drawing rotated texts using CBCGPGraphicsManagerGDI. Fixed problem with drawing dates with year less than 1900 in CBCGPDateTimeCtrl and CBCGPCalendar under VS 2005 and higher. Fixed some problems in Chart Control. Version 15.0. Released 12/20/2010 New features: 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. 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. 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). 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 Added description to CBCGPButton (see screenshot ): CBCGPButton::SetDescription/ CBCGPButton::GetDescription methods have been added. 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. 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. Fixes: CBCGPDateTimeCtrl doesn't show drop-down calendar if control is disabled. CBCGPGridCtrl: fixed some problems with mouse wheel. CBCGPGridCtrl: Changed implementation of the "merged cells" feature. CBCGPGridCtrl: fixed print pagination bug, the bug appeared if a column width was larger than a print page. 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: The product is fully compatible with Visual Studio 2010. 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! Implemented Resizable Dialogs support (see screenshot1 and screenshot2): Added 2 new classes: CBCGPControlsLayout: implements the base class for all layout managers. CBCGPStaticLayout: implements "static" layout management based on anchors. To enable layout support, you've to call EnableLayout/GetLayout methods in the following classes: CBCGPDialog CBCGPDialogBar CBCGPropertyPage 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: BCGPOrganizer: resizable dialog bar. ToolBoxDemo: resizable form 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: BreadcrumbFillBackground BreadcrumbDrawItemBackground BreadcrumbDrawItem BreadcrumbDrawArrowBackground BreadcrumbDrawArrow BreadcrumbDrawLeftArrowBackground BreadcrumbDrawLeftArrow Calculator control has been significantly improved: All calculator buttons are drawn using built-in bitmaps and use visual manager appearance (see screenshot ). 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. 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. Grid and Report controls changes: Added option to select items by clicks on grid header: New header flag BCGP_GRID_HEADER_SELECT. Improved grid printing support. The following new classes were added: CBCGPGridPage class: this class is used by the grid control to store print pages. A print page specifies which area of the grid is printed at the specified page. The grid counts in items in vertical direction. The grid counts in pixels in horizontal direction. CBCGPGridPageInfo class: This class is used by the grid control to store information about the printing range and the currently printing page. It is stored in CBCGPGridCtrl::m_PrintParams::m_pageInfo member and in CPrintInfo::m_lpUserData member of the CPrintInfo object used while printing at the current print session. Added an option to deselect items. To deselect an item please use SetCurSel with SM_INVERT_SEL flag. New functions were added: CBCGPGridCtrl::EnableInvertSelOnCtrl CBCGPGridCtrl::IsInvertSelOnCtrlEnabled Changes in header click events: New BCGM_GRID_COLUMN_CLICK message. Added CBCGPGridCtrl::OnHeaderColumnRClick. Modified CBCGPGridCtrl::OnHeaderColumnClick. Items align support: New CBCGPGridItem::GetAlign function. Item's alignment is specified by CBCGPGridCtrl::SetColumnAlign. Grid horizontal pagination support. Added CBCGPGridPage::m_nWidth - page width, CBCGPGridPageInfo::m_nPageWidth - width of currently printed page. See CBCGPGridPage class, CBCGPGridPageInfo class. Drag-and-Drop support (see new "Drag and Drop" tab in BCGPGridExample sample): New message BCGM_GRID_BEGINDRAG. Added methods EnableDragSelection, IsDragSelectionEnabled, EnableDragSelectionBorder, IsDragSelectionBorderEnabled, StartDragItems and HitTestSelectionBorder. Extended in-place edit customization support (see new "Easy Input" tab in BCGPGridExample sample): New messages BCGM_GRID_ITEM_BEGININPLACEEDIT, BCGM_GRID_ITEM_ENDINPLACEEDIT. New functions OnBeginInplaceEdit, OnEndInplaceEdit, CanBeginInplaceEditOnChar, CanEndInplaceEditOnChar, OnInplaceEditKeyDown, OnInplaceEditSetSel. New BCGPGRID_ITEM_INFO::dwResultCode member. See BCGPGRID_ITEM_INFO struct. New method SetClearInplaceEditOnEnter. Call SetClearInplaceEditOnEnter (FALSE) to disable grid from clearing content of the item on Enter. Added CBCGPGridCtrl::GoToNextItem method. CBCGPGridCtrl::EnsureVisible is now virtual. Added navigation by TAB (Shift+TAB) key. Added "Ctrl+Z" (Undo) handler for in-place edit of the grid item. Changes in CBCGPGridCtrl::SetCurSel for SM_SET_ACTIVE_ITEM style. Grid item with combo-box now supports F4 to open drop-down list. CBCGPGridItem has a new virtual method: NewInPlaceEdit. Override this method if you need to create your own in-place edit control. Added new protected function OnGetColumnAutoSize. It allows to customize the column auto-size feature in the CBCGPGridCtrl-derived class. Editor enhancements: CBCGPEditCtrl::ExportBuffer has a new optional parameter 'BOOL bForceAnsi'. Setting it to TRUE forces exporting editor's text in ANSI format. Added new function GetCurLine (CString& strLine). 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. Gantt chart enhancements: CBCGPGanttView: new virtual methods 'OnCreateChart' and 'OnCreateGrid' have been added. Override these methods if you wish to create your own Gantt view panes. Added new registered messages: BCGM_GANTT_CONTROL_CREATE_CHART: allows using custom chart control. Sent when the Gantt control creates a chart. BCGM_GANTT_CONTROL_CREATE_GRID: allows using custom grid control. Sent when the Gantt control creates a grid. New virtual method CBCGPGanttChart::QueryRenderer allows to override the Gantt rendering. Skinned dialogs enhancements and improvements: Improved appearance of disabled CBCGPStatic control. CBCGPStatic has a new member: m_clrText. You can set this member to colorize text labels (see SkinnedDialog sample). Multi-line text is vertically centered now in CBCGPButton control. Radio button is correctly painted now when BS_AUTO3STATE is not defined. CBCGPComboBox doesn't "eat" CBN_CLOSEUP and CBN_DROPDOWN notifications: ON_CONTROL_REFLECT_EX is used instead of ON_CONTROL_REFLECT now. Added support for drawing CBCGPComboBox control with CBS_SIMPLE style. CBCGPPropertySheet adjusts correctly the window size when the property sheet header is enabled. Added support for PSM_SETWIZBUTTONS and PSM_SETFINISHTEXT messages in CBCGPPropertySheet 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. DS_CONTEXTHELP style is not used now in CBCGPropertySheet window. The check box height is calculated correctly now when CBCGPButton is created in High DPI mode. Added CBCGPCalendarBar::GetState method - returns the calendar style flags specified in SetState method. CBCGPProgressDlg::StepIt has a new, optional parameter 'bWaitForMessages'. Set this parameter to FALSE in order to prevent unnecessary message waiting. 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. Fixes: CBCGPGroup properly handles WM_SETTEXT message now. CBCGPCalendar always closes dropped-down month picker when the calendar is being destroyed. Fixed problem with text alignment in grid columns. CBCGPGridCtrl::SetColumnAlign is working properly now. Fixed problem with scrolling CBCGPCalendar and CBCGPDateTimeCtrl dates outside the allowed year range (between 100 and 9999). 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. Fixed problem with clicking on CBCGPGridURLItem in read-write mode. Fixed a bug with automatic sizing of grid columns. The bug appeared when auto-sizing was enabled with EnableColumnAutoSize(TRUE). 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. Fixed memory leak in CBCGPGridCtrl::CopyHtmlToClipboardInternal. 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: The product is adapted for Visual Studio 2008 Service Pack 1 . 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. 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. 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. CBCGPDialog::SetBackgroundImage supports PNG images now. CBCGPPropertySheet has a new mode now: PropSheetLook_Wizard (see screenshot ). 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. Added support for Help ("?") caption button in the skinned dialogs and property sheets. 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). Fixes: Fixed a lot of bugs in the skinned controls and dialogs: CBCGPStatic redraws itself when control is being enabled/disabled CBCGPGroup handles WM_UPDATEUISTATE message. This fixes some redrawing bugs. CBCGPButton: fixed some drawing bugs in check box and radio button modes. CBCGPDialog and CBCGPPropertySheet handle WM_SETTEXT message and redraws the dialog caption now. CBCGPPropertySheet adjusts the property sheet buttons when "Apply" button is clicked. CBCGPEdit::OnNcPaint draws the control border only if control has 'WS_BORDER' style. 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. CBCGPButton supports 3-state check boxes now. CBCGPButton allows to subclass multi-line and right/center aligned check boxes and radio buttons. The dialog group box is painted correctly now when the group caption is empty. Tooltip position for CBCGPGridColorItem is calculated properly now. Fixed bug with tabs and indenting in the editor, fix in CBCGPEditCtrl::InsertTab. Mouse double click to select one word in the editor works properly now. CBCGPEdit doesn't "eat" EN_CHANGE notification. Fixed some visual bugs with drawing connectors in Gantt control. Improved performance of the Gantt storage: a developer can load a large amount of items. CBCGPGridCtrl: fixed bug with assertion failed in debug when only one column is visible. CBCGPEditCtrl: Fixed bug in GetLine: the previous version truncated the last character in line.