Skip Navigation LinksBCGSoft > Release Notes > Version Release Notes

Release Notes

BCGControlBar Professional Edition

Version: 35.0. Released: 05/29/2024

  1. The Toolbar Editor has been fully redesigned; in the previous product versions, this editor was limited by adding toolbar buttons and separators and assigning icons to the buttons. Now, the Toolbar Editor has become a really rapid development tool that allows you to create an enhanced toolbar with controls in minutes without writing a large amount of code. You can add the following toolbar controls and specify their attributes (see screenshot): 
    • Button
    • Label
    • Color button
    • Edit box
    • Edit box with spin buttons
    • Edit box with calculator
    • Combo box
    • Font combo box
    • Font size combo box
    • Slider (tracker)
    Toolbar Editor creates an XML file that contains the controls, and the framework automatically loads it. Please take a look at the BCGPVisualStudioGUIDemo example application to see how this works.
  2. Implemented a Visual Studio 2022-style visual manager (see screenshot). In the initial release of Visual Studio 2022, the user interface was almost the same as it was in Visual Studio 2019, so we decided not to create a new visual theme. But after several updates, the UI has been significantly improved, and now you can enjoy this new visual theme that is fully compatible with the Fluent UI standards! This theme is implemented by a new class, CBCGPVisualManagerVS2022 (derived from CBCGPVisualManagerVS2019), and the BCGP_VISUAL_THEME enumerator has three new members:
    Please run the BCGPVisualStudioGUIDemo example to see this new theme. Also, the theme was added to many other examples, samples, and Application Wizard-generated code.
  3. Enhanced support for the multiple top-level document interface applications. The following new members were added to the CBCGPWorkspace (base of the CBCGPWinApp) class:
    • m_nFileNewFrameCommandID: the command ID associated with new frame creation (usually ID_FILE_NEW_FRAME). If this member is specified, all inactive frames will be automatically disabled during toolbar or ribbon customizations.
    • m_bAutoSyncControlBarsStateBetweenFrames: specifies whether the frame state should be automatically synchronized. For example, after finishing toolbar or ribbon customization, all your changes will be applied to other frames.
    These members are always specified in the Application Wizard-generated code if you are choosing multiple top-level document interface application style.
  4. Ribbon Bar
    1. CBCGPRibbonProgressBar: the new attribute "Narrow Channel" (SetNarrowChannel and IsNarrowChannel methods) specifies whether the ribbon progress bar is created with a narrow channel (see screenshot).
    2. Built-in dialogs (CBCGPRibbonBackstagePagePrint, CBCGPRibbonCustomizeRibbonPage, CBCGPRibbonCustomizeContextMenuPage, and CBCGPRibbonCustomizeQATPage): improved appearance of the buttons with standard icons in some dark themes.
    3. CBCGPRibbonColorButton: the new attribute "Selected Color" (SetSelectedColor and GetSelectedColor methods) specifies a color that will be selected on the drop-down color panel. This is helpful for indicating which color is used in the selected object (see the DrawCli example program).
  5. Toolbars and Menus
    1. The following new methods (to support loading data saved by Toolbar Editor) were added to the CBCGPToolBar class:
      • LoadFromXML: loads toolbar from the XML resource.
      • LoadFromXMLFile: loads toolbar from the XML file.
      • LoadFromXMLBuffer: loads toolbar from the XML buffer.
      • OnCreateButton: called by the framework to create a toolbar button or control from the XML node.
    2. Toolbar customization improvements:
      • In the case of the multiple top-level document interface, when the user opens the toolbar customization dialog, all other frames become disabled, and the user can only customize toolbars or menu bars in the current frame. When the customization is finished, the toolbar state is copied to other frames. In addition, when the user changes the toolbar layout by holding the Alt key and dragging buttons, the layout will be automatically synced across all frame windows.
      • Toolbar controls (such as the edit box, date/time picker, or slider) don't look disabled in the customization mode anymore.
      • Added a new customization flag: BCGCUSTOMIZE_DISABLE_OTHER_FRAMES (used in the multiple top-level document interfaces).
    3. Toolbar slider: added the ability to center the slider control vertically in the row (when the parent toolbar is docked horizontally) or horizontally in the column (in the case of the vertically docked toolbar). Call the new static method CBCGPToolbarSlider::SetCenterVert() to enable this feature.
  6. Dialogs and Forms
    1. CBCGPPropertySheet: implemented the ability to keep the current focus when the property sheet is being resized. Call the new method SetKeepFocusedControlOnResize to enable this feature. IsKeepFocusedControlOnResize tells whether the current focus is not changed upon the dialog resizing.
    2. A new class, CBCGPFontDialog, implements the themed font dialog (see screenshot). The interface of this class is very similar to MFC's CFontDialog, so you may upgrade to this class without significant changes in your code.
    3. CBCGPFormView: the border is drawn now by the visual manager; you will not see a heavy 3D border around the view along with themed scrollbars anymore.
  7. Visual Manager and Themes
    1. Improved appearance of the GUI elements with too dark or pale accent color (Visual Studio 2013-2022 and Office 2013-2022 visual themes): in the previous versions, the customer may encounter non-contrast color issues. In addition, CBCGPVisualManagerVS2012::SetAccentColorRGB has a new, optional parameter, bAutoCorrectLuminosity (TRUE by default).
    2. Enhanced support for the custom colors of the non-client area (Visual Studio 2013-2022 and Office 2013-2022 visual themes): CBCGPVisualManagerVS2012::SetFrameColor has the following new parameters:
      • colorFillInactive: inactive frame background color
      • bThinFrames: specifies whether the border is thin; FALSE by default.
      Using this addition, you can easily specify the custom colors for the active and inactive frames (see screenshot).
    3. Improved appearance of the slider (tracker) control and progress bar in some visual themes (see screenshot).
    4. Improved color set in Office 2021/2022 black visual theme (see screenshot). The colors now have more contrast, and their appearance is very similar to MS Office applications (after the latest updates).
  8. Grid and Report Controls
    1. Significantly improved performance of operations affected all grid rows (such as OnColorThemeChanged or OnFilterBarApply).
    2. Added dynamic subitems support. Call the new method "CBCGPGridRow::EnableDynamicSubItems" to enable this feature for a specific grid row, and override the CBCGPGridCtrl::OnFillRowDynamicSubItems method to create child rows on expanding a group row. Please take a look at the new "Dynamic Sub-Items" view in our BCGPGridExample to see this new feature in action.
    3. Implemented the grid item markup support (see screenshot): this new feature allows adding hyperlinks to the grid items. To enable markup in a grid item, please call the new method "CBCGPGridItem::EnableMarkup" and put text containing hyperlink tags into a grid item. Override the "CBCGPGridCtrl::OnClickItemLink" method to handle the grid item link click. Or you can add a new registered message BCGM_GRID_ITEM_LINK_CLICK handler to the grid owner window class. Please take a look at the "Merged Cells" and "Cell Types" views in our BCGPGridExample to see this new feature in action.
    4. A new method, "CBCGPGridCtrl::GetFilterBarText," retrieves the filter bar text for a specific grid column.
    5. Implemented the grid row subitems sorting: please call the new method "CBCGPGridCtrl::SortChildRows" (default sorting) or "CBCGPGridCtrl::SortChildRowsCB" (sorting with a callback) to sort all children of the specified row in the grid control.
    6. Added option to enable or disable the expanding or collapsing of a group row on the mouse double click. By default, this option is enabled, but you can disable it now by calling the new method "CBCGPGridCtrl::EnableExpandOnDblClick" with the parameter bEnable=FALSE.
    7. CBCGPGridCtrl::MergeRange now returns a pointer to a newly created merged cell.
  9. Property Grid Control
    1. CBCGPFontProp: the class constructor has a new, optional parameter 'bThemedFontDialog'; set this parameter to TRUE to display the themed (CBCGPFontDialog) dialog when the user clicks the "Browse" button on the right side of the font property.
    2. CBCGPPropertyManager: a new virtual method OnAfterLoadProperties is called by the framework after all properties are loaded from the XML and ready to use. Override this method if you need to modify the default (specified in XML) property content.
  10. Controls
    1. CBCGPListCtrl: the new attribute "Gray disabled items" (SetGrayDisabledItems and IsGrayDisabledItems methods) specifies whether the text of the disabled list control is grayed.
    2. CBCGPButton: you can now assign CBCGPSVGImage directly to the control using new versions of the SetImage and SetCheckedImage methods (please take a look at the BCGPControls example, "Check/Radio buttons" view).
    3. CBCGPEdit: a new attribute, DisableFrameAccelTableOnFocus (SetDisableFrameAccelTableOnFocus and IsDisableFrameAccelTableOnFocus methods were added), allows to suppress handling of the keyboard accelerators in the top-level frame when the control is being focused. This is useful when an application has one-character accelerators (e.g.,'s'), and in this case, typing the character invokes the command instead of adding this character to the edit box.
    4. CBCGPEdit: you can now assign CBCGPSVGImage directly to the Browse button using the new version of the SetBrowseButtonImage method.
    5. CBCGPTreeCtrlEx additions:
      • Implemented the tree item markup support (see screenshot): a new markup feature allows adding hyperlinks to the tree items. To enable markup in a tree item, please call the new method EnableItemMarkup and put a text containing hyperlink tags into the tree item. Add a new registered message BCGM_GRID_ITEM_LINK_CLICK handler to the tree control owner window class to handle the tree item link click. 
      • Implemented children sorting: please call the new method SortChildren (default sorting) or SortChildrenCB (sorting with a callback) to sort all children of the specified tree item. Alternatively, you may send a TVM_SORTCHILDREN or TVM_SORTCHILDRENCB message to the tree control. 
      • Added TVIF_CHILDREN flag support: now, you can fill the tree item children dynamically when the user clicks the tree item expand button.
      Please take a look at the BCGPControls example ("Extended tree control view") to see these new features in action.
  11. Edit control
    1. Improved DPI support: call the new method CBCGPEditCtrl::SetDPIAware to enable DPI awareness for the edit control. If DPI awareness is enabled, the Visual Studio-like font ("Courier New") will be used by default. Please take a look at the BCGPVisualStudioGUIDemo example to see this new feature in action.
    2. Improved appearance of the code suggestions (IntelliSense) popup: under Windows 11, this window now has rounded corners and shadows (see screenshot).
  12. Miscellaneous
    1. libpng was updated to version 1.6.43 (latest).
    2. zlib was updated to version 1.3.1 (latest).
    3. CBCGPSVGImageList: added support for the list of symbols. In the previous product versions, only nested SVGs were supported, and now you can load the SVG icons list from the symbols (sprite, supported by most SVG sprite editors).
    4. CBCGPKeyboardManager: in the case of the multiple top-level document interface, the UpdateAcellTable method automatically copies the updated accelerator table to other (inactive) frames.
  13. Examples and Samples
    1. In most examples and samples, the initial visual theme is based on the Windows default application mode (light or dark). For example, the BCGPControls example will start in the Office 2022 black theme if your application mode is dark, and in the Office 2022 colorful theme if your application mode is light.
    2. BCGPControls: added a demonstration of how to assign an SVG icon from the sprite to the push button; the "Font" property is created with the themed "Font" dialog; and added demonstrations of how to use dynamic sub-items, items with hyperlinks, and child item sorting in the extended tree control.
    3. BCGPVisualStudioGUIDemo: added demonstration of the new Visual Studio 2022-style visual manager, loading toolbars for the Toolbar Editor-generated XML files, and usage of the default editor font.
    4. BCGPMSOfficeDemo and WordPad: a standard Windows font dialog was replaced with our themed font dialog (CBCGPFontDialog).
    5. DrawCli: added a demonstration of how to use a selected color in the ribbon color picker.
    6. BCGPGridExample: added a new "Dynamic Sub-Items" view (demonstrates how to dynamically load the grid row subitems) and grid items with hyperlinks ("Merged Cells" and "Cell Types" views).
    7. CaptionBarDemo: the custom colors are based on the luminosity of the current theme.
    8. RibbonGadgets: added demonstration of how to create a ribbon progress bar with a thin channel.
    9. Slider: added demonstration of the vertically centered slider control.
    10. EditorMarkers and MDIEditorDemo: added demonstration of the usage of the default editor font.
  14. Fixes
    1. Addressed issue with redrawing border after setting or losing focus for some controls.
    2. CBCGPWnd::SetControlVisualMode checks for CBCGPFormView now. In the previous product versions, SetControlVisualMode didn't work for controls created on the themed form view.
    3. CBCGPRibbonEdit, property grid filter edit box, and toolbox search box: fixed bug with unnecessary execution of command(s) associated with the keyboard accelerator when the edit box is focused.
    4. Grid control filter popup menu: fixed bug with unnecessary menu opening animation.
    5. CBCGPToolBar: addressed some issues with incorrect visual feedback during the customization.
    6. CBCGPGridCtrl: addressed the issue with non-contrast numeric badge foreground color in some visual themes.
    7. CBCGPFrameWnd: addressed the issue of an incorrect frame state when the application is executed for the first time (no application data was previously saved in the registry).
    8. Frame caption bar: fixed bug with incorrect search box height in some multi-monitor with different DPI values environments.