BCGControlBar Professional Edition Version: 32.0. Released: 10/21/2021 Implemented Ribbon Simplified Mode (see screenshot). In this mode, the ribbon controls are displayed in a single line and panels (groups) are not collapsible. You may specify which commands are available in the simplified mode by calling new method CBCGPBaseRibbonElement::SetSimplifiedModeType. By default, small (16x16) icons will be used in the simplified mode. In addition, you can specify 20x20 icons for the simplified mode. Call new method CBCGPRibbonBar::SetSimplifiedMode to toggle between the simplified and classic Ribbon modes. Please take a look at new sample RibbonSimplifiedMode (see screenshot) and BCGPMSOfficeDemo example to see this new feature in action. The product source code is fully-compatible with latest C++ code standards and technologies: ISO C++ 20 standard. LLVM (CLang-Cl). The product is fully compatible with a final version of Windows 11 (see screenshot)! All product functionalities were thoroughly tested under latest release and all test cases are passed. Ribbon Bar CBCGPRibbonKeyboardCustomizeDlg: a new registered message BCGM_ON_BEFORE_ASSIGN_RIBBON_KEY is sent to the main frame before assigning a custom keyboard shortcut. Add this message handler and return non-zero if you wish to disallow assign specific keyboard shortcut to specific command. Ribbon Commands Search ("Tell Me"): added support for the split buttons (items with a default command). CBCGPRibbonComboBox: new method AddSeparator / InsertSeparator allow to add separators to the ribbon combo box (see screenshot). A new virtual method CBCGPRibbonBar::OnPrepareLightImages is called by the framework when a light version if the Ribbon image list needs to be prepared. By default, the framework changes the image luminosity (specified by CBCGPRibbonBar::SetImagesLuminosity). Please take a look at RibbonSimplifiedMode sample to see how to customize the light icons appearance. Improved keyboard navigation for the customized keyboard (if Ribbon categories/panels order and(or) visibility were changed in the Ribbon customization). CBCGPRibbonColorButton: a new virtual method OnDrawColorBox allows to customize a color box appearance (see screenshot). Please take a look at RibbonGadgets sample to see this new feature in action. CBCGPRibbonButton: RibbonButtonOnQAT enumeration has a new member BCGPRibbonButton_Show_As_Switch. Ribbon Designer: added simplified mode support and accessibility (testing) control names. Dialogs and Forms Added a new global flag globalData.m_bAutoPrepareComboListStyles: set it to TRUE in the application class constructor if you wish to recreate all list boxes and combo boxes with owner-draw (fixed) style. In addition, you may specify this behavior for specific dialogs and forms by overriding a new virtual method IsAutoPrepareComboListStyles (CBCGPDialog, CBCGPDialogBar , CBCGPFormView, CBCGPPropertySheet and CBCGPPropertyPage classes). CBCGPPropertySheet: a new virtual method OnGetPageNotificationBadgeSize allows to customize left-side notification badge dimensions. CBCGPScrollDialog: improved scrolling behavior after dialog resizing. Toolbar buttons/menu items list are not themed now when toolbar customization dialog is not visual manager-enabled. Gauge Controls CBCGPCircularGaugeImpl and CBCGPLinearGaugeImpl: improved interaction mode for the multi-scale gauges. New methods SetDefaultInteractivePointer and SetDefaultInteractiveScale allow to specify default (used in the mouse down event) pointer and scale. CBCGPBaseVisualObject::SetValue with uiAnimationTime > 0 stops the current animation and start a new one from the last animation finish value. CBCGPNumericIndicatorImpl: added a new type (BCGP_NUMERIC_INDICATOR_FORMAT_HEX_64) to format the value in HEX format with 64-bit precision. Visual container and Visual Designer CBCGPBaseVisualObject and CBCGPVisualContainer: ExportToBitmap and CopyToClipboard methods have a new optional parameter const CBCGPBrush& brFill. CBCGPEditVisualObject: implemented edit box prompt support - SetPrompt and GetPrompt methods were added to this class. Visual Designer: added Chart Axis names to the default chart object. Visual Manager and Themes CBCGPTabWnd: improved tab selection appearance (especially, for the multiple-selected colored tabs). Office 2019 theme: added Ribbon tab highlighting and activation animations (see screenshot). Office 2019 theme: improved contextual Ribbon tab appearance (see screenshot). Improved appearance of the default Ribbon control icon in the simplified look (see screenshot). Improved appearance of the "colorless" (BCGPCategoryColor_None) contextual tabs in all visual themes. The Ribbon controls drop-down arrows have a modern look now (see screenshot). Improved appearance of pin optionally located on the list box item right side (see screenshot). Grid and Report Controls Added "frozen rows" (non-scrollable rows located on top of the grid) support (see screenshot). The following new methods have been added to the grid control: FreezeRows: this function enables the "frozen rows" feature, which allows to keep rows visible while the rest of rows are scrolled vertically. UnfreezeRows: disables the "frozen rows" feature. Please take a look at BCGPGridExample application to see this feature in action. CBCGPGridItem::SetValue method is a virtual now. Implemented support for the grid item selected and overlay icon: SetSelectedImage, GetSelectedImage, SetOverlayImage and GetOverlayImage methods were added to CBCGPGridItem class. Controls CBCGPTreeCtrlEx: added TVIF_SELECTEDIMAGE and TVIS_OVERLAYMASK support (see screenshot). This addition makes CBCGPTreeCtrlEx more compatible with standard Tree control. Please take a look at BCGPControls example ("Extended tree control" view) to see this feature in action. CBCGPInfoBoxCtrl: you can specify a large text now (without CStatic limitation: 256 characters). CBCGPSliderCtrl: implemented ability to align selection bar by tick marks. New methods SetAlignSelToTickMarks and IsAlignSelToTickMarks were added. Please take a look at BCGPControls example to see this new feature in action. CBCGPColorComboBox: a new method SelectColor allows to select item by RGB value. CBCGPComboBox: added CB_SETCUEBANNER message processing. The cue banner will be converted to the edit prompt. CBCGPComboBox and CBCGPListBox: a new method BCGPModifyStyle allows to re-create control with the same properties (location, data, tab order), but with a new style. Windows doesn't allow to modify some list box/combo box styles (such as owner draw or sorted) after control is created, but sometimes this change is needed (for example, when visual theme is applied to the parent dialog). CBCGPEdit: added EM_SETCUEBANNER message processing. The cue banner will be converted to the edit prompt. CBCGPListBox: implemented alternate (odd/even) row colors (see screenshot). Call new method SetAlternateRowColor to enable/disable this feature. You can see this new appearance in BCGPControls example. CBCGPProgressCtrl: new method StopLighting stops a light effect animation. Graphics Manager A new static method SetCreateInstanceCallback allows to specify a callback which will be called when a new graphics manager is created by the framework. A new method IsGeometryContainsPoint tells whether a point is located in the specified geometry bounds. MSAA and CodedUI Tests CBCGPWinUITiles: added MSAA support for scrollbar object. CBCGPVisualContainer: added MSAA support for scrollbar objects. CBCGPButton: implemented accessibility default action for the check box and radio button. Implemented toolbar button/menu item/ribbon control accessibility (testing) names. You may specify these names by calling CBCGPToolbarButton::SetAccTestingName and CBCGPBaseAccessibleObject::SetAccTestingName methods. Set a new global member globalData.m_dwTestingMode = BCGP_TESTING_ACC_NAME if you wish to activate this feature. Miscellaneous CBCGPToolBarImages: a new method GetResourceID returns an images resource ID (if image list was created from the single resource). CBCGPToolBarImages::ExportToImageList: added a new optional parameter 'BOOL bMask32' (default is FALSE). If this parameter is TRUE, the 32-bit image list will be created with ILC_MASK flag. CBCGPStatusBar: SetPaneWidth and SetPaneInfo methods have a new optional parameter bExactWidth. Set it to TRUE if you wish to specify and exact pane width (without internal paddings). CBCGPSplitterWnd: class constructor has a new, optional parameter bIsScrollBarThemed. Set it to TRUE if you wish to enable themed scroll bars inside the splitter panes. CBCGPFileDialogEx: new virtual methods OnFolderChange (called after current folder changing) and OnTypeChange (called after file type changing) were added to this class. Override them if you wish to customize the extended file dialog behavior and/or appearance. CBCGPGanttChart: SelectItem has a new, optional parameter bStartDrag. When this parameter is FALSE, you may select an item without ability to drag it. CBCGPGlobalUtils: added method AnimateRect. Call this method to calculate an intermediate area during transition between 2 rectangles. CBCGPCalculator: improved keyboard support; added a "press button" visual feedback and implemented standard Windows keyboard shortcuts. CBCGPToolbarComboBoxButton: a new method FindItemData returns an index of item with specified data. Chart control: improved hit-testing used in the interactive mode. Notification badges: you may specify INT_MAX value to draw badge without number or ellipses. CBCGPRegistry: a new method Reset rolls-back m_hKey to the initial value (should be called after CBCGPRegistry::Close!) Added new member to BCGPGLOBAL_DATA: bIsWindows11. This variable is TRUE if application is running under Windows 11 or future versions. Examples and Samples BCGPControls: added demonstration of list box alternate colors, align selection bar by tick marks in the slider control and overlayed/selected icons in extended tree control. BCGPGaugesDemo: improved interactive mode demonstration. BCGPGridExample: added frozen rows demonstration. BCGPMSOfficeDemo: added Ribbon simplified mode demonstration. DrawCli: demonstrates how to use CBCGPSplitterWnd for creating a splitter with themed scroll bars. NotificationBadgesDemo: added badge without number (value is INT_MAX) demonstration. RibbonGadgets: added demonstrations how to create a color picker with custom shape and combo box with separators. RibbonSimplifiedMode (see screenshot): this new sample demonstrates how to create a simplified Ribbon bar and customize Ribbon controls appearance in the simplified mode. Fixes Toolbar buttons/menu items list is not themed now when toolbar customization dialog is not visual manager-enabled. Addressed issue with missing context menu that should appear upon Press and Hold gesture event in some standard controls (Visual Studio 2010 or later). CBCGPTabWnd: addressed issue with incorrect tabs area height when all tabs are hidden and control has Pointer or Underline style. CBCGPShellList: folder and file items are sorted separately now if the list is sorted by date. CBCGPSliderCtrl: addressed issue with reversed order in non-themed control. CBCGPSVGImage: addressed some issue with default attributes specified in "svg" node. CBCGPPropList: improved behavior of clicking non-selected property button area. In the previous versions unexpected OnClick event was fixed in this case. CBCGPGroup: addressed issue with incorrect text color in non-themed control. CBCGPBaseVisualCtrl: OnWndEnabled(FALSE) is called when control is initially disabled. CBCGPWindowsNavigator: addressed issue with loading application resources when the navigator window is active. CBCGPComboBox::SetImageList: addressed issue with image height calculation when SVG-based image list is being loaded. CBCGPGroup: addressed some redrawing issues. CBCGPListBox: addressed issue with incorrect caption row height when control has Owner Draw Fixed style. CBCGPProgressCtrl: addressed issue with border redrawing in the high-contrast mode. CBCGPCircularGaugeImpl: addressed issue with incorrect level bar position when gauge is placed inside the scrollable container. CBCGPGlobalUtils::GetCaptionButtonSize: fixed Windows OS bug WM_GETTITLEBARINFOEX on Windows 10 with Multi-monitors and DWM. CBCGPGridCtrl: addressed issues in control non-client area when WS_EX_CLIENTEDGE extended style is specified. Docking panes: smart docking markers are DPI-aware now.