
Adds context menu customization for Ribbon-based apps, themed rebar and improves high-contrast mode.
Features
- Ribbon Bar
- CBCGPRibbonSlider: control width is scaled now according to the current DPI.
- CBCGPRibbonBar: GetItemIDsList has a new, optional parameter 'bIncludePrintPreview'. If this parameter is FALSE, controls from "Print Preview" category are not included in the items list.
- A new virtual method CBCGPRibbonComboBox::OnCompareStrings allows the customization of Ribbon combo box items sorting.
- A new class CBCGPRibbonFontSizeComboBox allows choosing specific font size. In addition, a Ribbon Font Size combo-box was added to the Ribbon Designer.
- Added context menu customization for the Ribbon-based applications. A new class CBCGPRibbonCustomizeContextMenuPage implements a context menu customization page.
- Toolbars and Menus
- Toolbars customization: if user-defined image list is SVG, image editing is no longer allowed.
- CBCGPReBar: added visual themes support. A new method EnableVisualManagerStyle was added to CBCGPReBar class.
- CBCGPToolbarButton: SetRect method is virtual now.
- CBCGPToolBar: SVG image list can now be used as "disabled" icons list.
- CBCGPUserTool: added large icons support. If user adds a tool to toolbar and "Large icons" mode is active, the large (32x32 in 100% DPI) icon will be displayed on the corresponding toolbar button. A new virtual method SetToolLargeIcon allows you to specify a custom icon.
- Added a new class CBCGPToolbarDateTimeCtrl2 (derived from CBCGPToolbarDateTimeCtrl). This class has outlined COleDateTime member, so you don't have "1970-2038" limitation as CBCGPToolbarDateTimeCtrl has (it is based on CTime).
- Docking Panes
- CBCGPBaseControlBar::IsVisible returns FALSE now if window is not created yet.
- CBCGPDockingControlBar: added ability to hide the pane in Windows Navigator (invoked by Ctrl+Tab). Override a new virtual method IsVisibleInWindowsNavigator and return FALSE if you wish to hide the pane.
- MDI Windows and Tabs
- CBCGPMDIFrameWnd: a new method IsWindowsNavigatorActive tells whether a windows navigator (invoked by Ctrl+Tab) is active.
- CBCGPMDIFrameWnd: EnableWindowsDialog method has a new, optional parameter bStorePlacement. If this parameter is TRUE, "Windows" dialog will appear on the recent location with a recent size.
- Tasks Pane and Toolbox
- CBCGPToolBoxEx: implemented keyboard navigation support.
- CBCGPToolBox and CBCGPToolBoxEx: toolbox items can now be disabled. New methods Enable and IsEnabled were added to CBCGPToolBoxButton class. You may specify whether disabled items are visible or hidden by calling new methods CBCGPToolBoxEx::SetShowDisabledItems or CBCGPToolBox:: SetShowDisabledItems.All items located on specific toolbox page can be enabled/disabled by calling new method CBCGPToolBoxPage::Enable
- New method CBCGPToolBoxPage::SetEmptyPagePrompt allows you to specify the information displayed on the empty toolbox page.
- Chart Control
- Polar charts:
- CW and CCW direction of the polar X axis (CW by default).
- Starting angle for the polar X axis 0, 90, 180, 270 (90 by default).
- CBCGPChartLongSeries (huge average data): new X values filtering algorithm for long series ("Minimum", "Maximum", "Min\Max Mean" by default, "Average"). Call "CBCGPChartLongSeries::SetFilterMode" to set the filtration mode.
- Multiple pies and nested charts: blank spaces in multiple pie or nested doughnut charts. Call "CBCGPChartVisualObject::SetIgnoreInvisibleMultipleSeries" method to remove the blank spaces.
- Percentage series (Pie, Funnel, Pyramid): always show the tile caption (series name) for the percentage series (FALSE by default). Call new method 'CBCGPChartPercentSeries::SetAlwaysShowTileCaption' to show/hide captions.
- Polar charts:
- Gauge Controls
- Circular and Linear gauges: improved interactive mode. Users can now move different data pointers located on the same gauge scale.
- CBCGPNumericIndicatorImpl: implemented gauge interactive mode.
- CBCGPGaugeTrackingData has a new member m_nPointer. This member specifies an index of the gauge pointer that was clicked and dragged by a user.
- Calendar and Planner
- CBCGPCalendar: added a new registered message BCGM_CALENDAR_ON_MONTHCHANGED. This message will be sent to the owner window upon first month change. Handle this message if you wish to add some actions after months change.
- CBCGPPlannerManagerCtrl and CBCGPPlannerView: a planner control and all views are touch-friendly now; the control content is scrolled vertically upon the gesture pan event.
- CBCGPRecurrenceBaseRule: CreateCopy method is virtual now.
- Controls
- CBCGPListCtrl: added ability to disable column sorting on clicking a header item - new methods EnableSorting and IsSortingEnabled were added to this class.
- CBCGPGroup: DoDraw method is virtual now.
- CBCGPStatic: SetPicture method has a new, optional parameter 'bDisable3DColorsMapping'. When this parameter is FALSE, the system 3D colors are not mapped to the active visual theme colors.
- CBCGPTreeCtrlEx: added TVM_GETEDITCONTROL message processing.
- CBCGPTreeCtrlEx: added support for TVN_BEGINDRAG, TVN_BEGINLABELEDIT and TVN_ENDLABELEDIT notifications.
- Graphics Manager
- A new class CBCGPGraphicsManagerHelper provides an easy and efficient way to use graphics manager in any CWnd-derived class: simply derive your class from CBCGPGraphicsManagerHelper (multiple inheritance), override OnGraphicsManagerDraw method and call DoGraphicsManagerDraw from OnPaint or OnDraw.
- Added new shape geometries (new GraphicsManagerDemo demonstrates them):
- CBCGPShapeGeometry.
- CBCGPShapeBasicGeometry.
- CBCGPShapePolygonGeometry.
- CBCGPShapeStarGeometry.
- CBCGPGradientPoint: added CompareWith method and '=' operator.
- MSAA and CodedUI Tests
- CBCGPEdit: if edit box is empty and control has a prompt, the prompt is returned now as accessibility value.
- CBCGPGaugeImpl::get_accValue returns a list of pointer values (separated by space) if gauge has multiple data pointers.
- CBCGPToolBoxEx and CBCGPTasksPane: significantly improved MSAA support for these components.
- Gantt Chart
- CBCGPGanttControl: added a new optional parameter to SetStartDateColumnIndex and SetFinishDateColumnIndex methods. A new parameter nFlags specifies date time format for "Start Date" and "Finish Date" columns. You may set Date, Time, or Date and Time combination.
- CBCGPGanttControl: added new methods GetStartDateFormatFlags, GetFinishDateFormatFlags that retrieve the date time format for "Start Date" and "Finish Date" columns.
- Miscellaneous
- The library and examples/samples are fully tested with latest versions of Microsoft Visual Studio 2019 and Microsoft Windows SDK.
- Improved high-contrast mode support: application colors are now correctly specified in case of custom high contrast colors in Microsoft Windows 10. In addition, many high-contrast issues were addressed in this release.
- BCGPGLOBAL_DATA::GetLinkIcon and BCGPGLOBAL_DATA::GetToolIcon(BOOL bLarge) methods have new, optional parameter 'BOOL bLarge'. If this parameter is TRUE, a large icon will be returned.
- Addressed all issues with compiling library with /permissive- flag and C++ 17.
- CBCGPImageEditDlg: image preview area is DPI-aware now.
- CBCGPSplitterWnd: if parent window doesn't have a visual manager support (not themed), the control is painted using standard Windows colors.
- CBCGPEditView: implemented standard ID_EDIT_REPEAT command processing.
- CBCGPTabWnd: implemented minimal width of tabs - new methods SetTabMinWidth and GetTabMinWidth were added.
- CBCGPSVGImage: added "display" style attribute processing.
- CBCGPToolBarImages: new method SetDisable3DColorsMapping allows you to fully disable 3D system colors mapping.
- Improved appearance of dialogs special background areas (such as dialog background image, message box buttons area, expandable area, progress dialog header or "About" box top-located logo): these areas are also rendered on the dialog edges now. In addition, you can call new CBCGPDialog method from WM_NCPAINT message handler and add a new registered message BCGM_ONDRAWNCSPECIALAREA handler to draw your custom areas.
- Improved new Application Wizard (for Visual Studio 2017/2019). The most significant improvements are:
- Better source code generated by the wizard (improved code formatting, unnecessary resource files are not included in the generated project anymore).
- Implemented ability to add "Ribbon Display Options" button (Microsoft Office 2016/2019-like).
- Improved Microsoft Windows Explorer-style application generated by the wizard (added command handlers for navigation buttons and breadcrumb demo items).
- A new method CBCGPDiagramImageObject::SetImageOpacity sets the opacity of the image diagram object. Set the opacity 0 for transparent images, set 1.0 for opaque images.
- CBCGPGridCtrl: a new method MoveRow allows to move grid row by specified offset.
- Examples and Samples
- BCGPGaugesDemo: added interactive circular and linear gauges demonstration.
- BCGPMSOfficeDemo: added Ribbon Font Size combo box and Context Menu property page demonstrations.
- WordPad: added Ribbon Font Size combo box demonstration.
- AnimationManagerDemo: CCanvasWnd demonstrates how to use a new class CBCGPGraphicsManagerHelper.
- DiagramEditor: added image opacity demonstration.
- DlgBars: added demonstration of how to draw pane edges on the dialog non-client area using new DoDrawSpecialAreaOnNC method and new registered message BCGM_ONDRAWNCSPECIALAREA.
- GraphicsManagerDemo: this new sample application illustrates usage of CBCGPGraphicsManager class.
- ProgressDialogDemo: a custom progress control is using now a new class CBCGPGraphicsManagerHelper.
- RebarDemo: demonstrates themed (visual manager-based) rebar.
- RibbonDialogBar: added CBCGPRibbonFontSizeComboBox demonstration.
- RibbonGadgets: added CBCGPRibbonFontSizeComboBox demonstration.
- SVGViewDemo: demonstrates a new class CBCGPGraphicsManagerHelper.
- ToolbarDateTimePicker: demonstrates usage of a new class CBCGPToolbarDateTimeCtrl2.
- ToolBoxDemo: demonstrates new ToolBox features such as keyboard navigation, adding toolbox pages, empty page prompt and resetting toolbox content.
- BCGPChartExample: added demonstration of CW and CCW direction and starting angle of the polar X axis ("Polar Charts" view) and new filtering algorithm in "Huge average data" view.
Fixes
- Addressed issue with integration of Application Wizard with Visual Studio 2017-2019.
- CBCGPGraphicsManagerD2D: addressed issue with calling GetDpiForWindow and GetDpiForSystem in Visual Studio 2019.
- CBCGPTreeCtrl: removed unnecessary TVM_GETEDITCONTROL message processing.
- Ribbon Bar QAT customization dialog: separator always appears now on top of the source list.
- CBCGPPropList: addressed issue with filter box height when toolbar large icon mode is activated.
- CBCGPPrintPreviewToolBar: toolbar doesn't appear in toolbars customization dialog anymore.
- CBCGPOutlookWnd: addressed some border drawing issues in certain visual themes.
- CBCGPPropertySheet: addressed issue of incorrect scaling of SVG tab icons in high-DPI mode.
- CBCGPPropertySheet: addressed issue with page transition if OnWizardNext or OnWizardBack (overridden in the property page) return a custom value (page index).
- CBCGPToolBarImages::CopyImageToClipboard: SVG icon is correctly copied to the clipboard (as bitmap) in high-DPI mode.
- CBCGPFrameWnd: addressed issue with main application frame popup (temporary visible) menu activation when the menu is activated from the torn-off frame.
- CBCGPRibbonBar: the Ribbon controls state is updated immediately after closing backstage view.
- CBCGPMainClientAreaWnd: addressed issue with incorrect tab window border size after creating a new MDI tab group.
- CBCGPExplorerToolBar: addressed issue with address bar (breadcrumb) location and Z-order.
- CBCGPExplorerToolBar: navigation buttons have a contrast color in all dark visual themes now.
- Addressed some issues with frame non-client area when user switches to the high contrast mode or back.
- CBCGPRibbonEdit: addressed issue with control's vertical alignment when control is located on the frame caption bar.
- Tasks Pane and Toolbox: addressed various MSAA issues.
- CBCGPDialog: addressed issue with incorrect border after resizing a maximized dialog box in some visual themes.
- Bubble Chart: addressed issue with an invalid label value when the X component is not specified.
- Planner control: addressed issue with incorrect insertion of appointments into the planner after pasting.
- Ribbon Backstage View: addressed issue with slider zoom button flickering when the view is being resized.
- Ribbon Bar: removed unnecessary system icon on Backstage View (in Office 2013-style Visual Manager).
- CBCGPEditCtrl: addressed issue with displaying hyperlink with custom color.
- CBCGPGridCtrl: addressed issue with dragging non-selected grid rows.
- CBCGPEditCtrl: addressed issue with displaying hyperlink with "https" prefix.
- CBCGPGraphicsManagerGDI and CBCGPGraphicsManagerGdiPlus: addressed some issues with a text drawing.