Release Notes BCGControlBar Professional Edition Version: 37.0. Released: 08/21/2025 In this version, we're pleased to introduce a new Translation Manager — the easy-to-use and efficient mechanism that allows you to translate your application user interface to an unlimited number of languages. With minimal effort, you can enhance your product's target group and distribute it worldwide. The translation manager is using XML resources. The XML format is very similar to XLIFF: it is bilingual, and it contains both the source text (originally located in your application resources) and the target (translation of the corresponding text). Prior to displaying any text or calculating the text size, the manager seeks the translation in the in-memory hash table and, if it is found, it will be used instead of the original text. The manager can load XML from the application resources (BCGP_TRANSLATE_XML resource type), an external XML file, or from a memory buffer. With the help of our new tool BCGTranslator (see screenshot), you can easily add translations to your program. To switch your UI to the specific language, simply call BCGPTRANSLATE_MGR.SetTranslation(id of your XML). The manager automatically translates menu items, ribbon and toolbar text labels, control bar names, toolbox items, task pane items, and others; however, it does not translate controls located on dialogs, forms, and property pages. Because the number of characters varies across different languages, some text labels may be partially visible. Therefore, we recommend staying with the "classic" localization method of the dialogs (adding the dialog resource per language) or reserving some extra space for each text label, checkbox, radio button, and others. To enable a specific dialog translation, please call a new method EnableControlsTranslation (added to CBCGPDialog, CBCGPFormView, CBCGPDialogBar, CBCGPPropertySheet, and CBCGPPropertyPage classes). Please look at the following new article to learn how to work with the translator application: Translator, and examine our new sample application MultiLanguageDemo (see screenshot). Ribbon Bar CBCGPRibbonDialogBar: implemented BCGM_CHANGEVISUALMANAGER registered message processing. Now, the outlined ribbon bar processed the visual theme change. CBCGPRibbonLabel: implemented the ability to draw the Ribbon bar text label with the bold font (see screenshot); call the new method SetBoldFont to specify whether the label is bold. Our sample RibbonGadgets ("Other" tab) demonstrates this new feature. CBCGPRibbonBackstageViewPanel: the AddLabel new method allows you to add a text label to the commands bar in the backstage view, which is located on the left side (see screenshot). Please look at the RibbonGadgets sample application to see this new feature. CBCGPBaseRibbonElement: EnableTranslation method allows/disallows the specific ribbon control translation. By default, all ribbon controls can be translated. Toolbars and Menus CBCGPToolBar: a new helper method GetButtonByCommand simplifies access to the toolbar button or control by the specified command ID. Improved appearance of the toolbar off-screen control dialog (see screenshot): some space was added to the left and bottom sides of the control's area. Dialogs and Forms CBCGPTaskDialog class additions: The constructor now includes a new optional parameter called 'pParent.' This parameter specifies a parent (owner) window of the task dialog. SetProgressBarMarquee method has a new, optional parameter, 'bMarqueeDotsFade.' Set the parameter to TRUE if you wish to display the marquee dots with a fading effect during progress. The CBCGPFontDialog now includes translations for the font styles. The CBCGPFontDialog class includes a new static member, m_strPreviewText, which is set to "AaBbYyZz" by default and specifies the text displayed in the preview area. CBCGPFormView: a new member m_bOptimizedEraseBackground specifies whether the background image will be drawn using memory DC. Set this member to TRUE if you have the form view background image and want to have a flicker-less background rendering. CBCGPProgressDlgParams: a new member m_bMarqueeDotsFade specifies whether the fade effect is applied to the progress bar (marquee dots mode). Visual Manager and Themes The title font is being used now for drawing the docking pane captions in MS Office 2013-2024 visual themes (see screenshot), which makes your application's appearance more similar to MS Office applications; in the previous product versions, the caption (bigger) font was used here. CBCGPWinApp: a method CleanupVisualThemeNames has a new, optional parameter, "bRebuildThemes." Set this parameter to TRUE to immediately rebuild the visual themes after the cleaning up. CBCGPVisualManager: a new virtual method IsHighlightEditCtrlOutlineBlocks specifies whether the editor outline block can be highlighted. By default, the outline block is highlighted in the following visual themes: Native Windows theme (Windows 10 or later) Office 2013 and newer Office-like themes Visual Studio 2010 and newer VS-like themes Grid and Report Controls CBCGPGridCtrl: implemented ability to specify the automatic scrolling speed during grid item(s) dragging. The methods SetDragAutoScrollSpeed and GetDragAutoScrollSpeed were added to the grid control class. CBCGPGridCtrl: a new virtual method GetColumnMinTrackingWidth allows you to customize the minimal width of the column that is being resized. By default, the minimal width is a header item height. Property Grid Control CBCGPPropList: implemented auto-complete for the editable properties with drop-down lists. Call the new method CBCGPProp::EnableAutoComplete to enable or disable this feature. You may customize the auto-completion behavior by overriding a new method of the CBCGPProp class, 'OnAutoComplete.' The BCGPControls example ("Property Grid" view) demonstrates this new feature. CBCGPProp: added a new virtual method, GetComboBoxStyle. Override this method in your CBCGPProp-derived class to change the property combo box style. Controls CBCGPComboBox: added a new, public member m_bRestoreSelectionOnCancel (FALSE by default). If this member is TRUE and the user closes the drop-down list by clicking outside or pressing the Esc key, the previously selected item will be automatically restored. This setting allows us to prevent mismatches between the really selected item and the displayed value. Set this member to TRUE if you are committing the combo box selection in the CBN_SELENDOK notification handler. CBCGPButton: a new method IsDefaultCheckRadio method indicates whether the control appears as a check box or a radio button. CBCGPProgressCtrl: a new public member m_bDotsFadeEffect (FALSE by default) specifies whether the marquee dots are displayed with the fade effect (see screenshot). The BCGPControls example demonstrates this new feature. CBCGPHotSpotImageCtrl: a new virtual method called OnAfterLoadImage is called by the framework immediately after the image loads. Override this method to implement some image processing, such as color modification, prior to displaying this image. Graphics Manager CBCGPSVGImage and CBCGPSVGImageList classes: a new method called ModifyOpacity allows you to change the opacity of all SVG elements. Please take a look at our new sample MultiLanguageDemo, where we are using this method to make the form view background semitransparent. A new method, ModifyOpacity, was added to the CBCGPColor and CBCGPBrush classes. CBCGPGeometry: added a new method Offset that enables the geometry to be shifted to the specified offset. MSAA and CodedUI Tests MSAA support has been added for the autohide docking panes, and the collapsed panes are now correctly exposing MSAA data. We have included the capability to translate MSAA names. Call the new method BCGPTRANSLATE_MGR.EnableMSAALabelsTranslation to enable or disable this translation. The MSAA names translation is useful for screen readers such as Narrator. If you are testing the application with any testing tools and the control names are hardwired in the testing scripts, the MSAA names translation should be disabled. CBCGPDateTimeList: improved MSAA support. Edit control The highlighting of outline blocks has been implemented (refer to screenshot). When this feature is enabled and the user hovers the mouse cursor over the outline button or bar, the text inside the block is highlighted. Call the new CBCGPEditCtrl class method SetHighlightOutlineBlocks to enable or disable this feature. The other new method, IsHighlightOutlineBlocks, tells whether the outline block highlighting is enabled. Please look at the BCGPVisualStudioGUIDemo example to see this addition in action. Implemented the whole row selection by clicking on the left side of the text (or left of the outline bar, if it is enabled) — see screenshot. Call the new CBCGPEditCtrl class method EnableSelectWholeRow to enable or disable this feature. The outlining of the single-row block is disabled by default now (as in the Visual Studio text editor). If you wish to enable it, please call the new CBCGPEditCtrl class method SetOutlineSingleRow. SelectLine method: a new, optional parameter, bCaretToEnd (FALSE by default), specifies whether the caret should be moved to the end of the selected line. The following CBCGPEditCtrl class new methods simplify the hit testing: XInSideBar: tells whether the point is located inside the sidebar. XInOutlineBar: tells whether the point is located inside the outline bar. XInLineNumbersBar: tells whether the point is located inside the line number bar. Miscellaneous BCGPGLOBAL_DATA: a new member, m_bUseThreadLocaleInLocalizedStrings, specifies whether the system strings (such as Ok or Cancel), by default, will be loaded using the current thread locale. CBCGPCircularGaugeImpl: The method EnableShapeByTicksArea has a new, optional parameter, 'bBestFit.' When this parameter is TRUE, the shape utilizes the maximum possible space (see screenshot). Please look at the BCGPGaugesDemo example ("Circular Gauges | Shapes" view) to see this new feature in action. Outlook bar button: if the parent outlook bar is docked on the right side, the selected (checked) bar is drawn on the right now. CBCGPWinUITiles: a method EnsureVisible has a new, optional parameter, 'bExactScroll.' If this parameter is FALSE (by default), the tile can be partially visible. CBCGPToolbarFontCombo: a new static member, m_bPrinterFonts, specifies whether the font combo boxes include the printer fonts. By default, this member is TRUE. BCGControlBar Application Wizard (for VS 2005-2015 and VS 2017-2022): the icon set for the Application Wizard-generated application was fully redesigned; the new icons support auto-inverse functionality and look good both in the light and dark application themes. Examples and Samples BCGPGaugesDemo: added demonstration of the gauge shape by the ticks area with the optimal fill. BCGPVisualStudioGUIDemo and MDIEditorDemo: added demonstration of the new editor features, such as whole-row selecting and outline block highlighting. GesturesDemo now includes the ability to emulate gesture events using the mouse. This addition allows demonstrating image transformation features, such as scaling or rotation, in the environment without a touch screen. RibbonGadgets: added demonstration of the ribbon backstage view static labels and ribbon labels with the bold font. StatusBarDemo: added the visual themes support; you can examine now how the status bar looks in the various visual themes, including dark themes. MultiLanguageDemo: this new sample (see screenshot) demonstrates how to use a new translation manager. BCGPControls: added demonstration of the fading effect in the progress bar (marquee dots mode) and demonstration of auto-complete of the editable property with drop-down list. BCGPEdgeDemo: improved its visual themes, which now resemble the latest versions of the MS Edge application more closely. Fixes Property Grid date/time picker: if the modified date/time property is displayed with the bold font, the dropped-down calendar or date/time list are no longer rendered using this font; the regular font is being used now. CBCGPCaptionBar: addressed some minor issues related to the recalculation of internal offsets after changing the DPI. BCGPPrintPreview: If the application has both a ribbon bar and menu/toolbar interfaces, and the ribbon bar is not visible, the "classic" (with toolbar on top) print preview is displayed now instead of the ribbon-based print preview. CBCGPPrintPreviewCtrl: addressed an issue related to the incorrect scrolling offset during mouse wheel event processing. CBCGPScrollDialog and CBCGPFormView: if the m_bAutoScrollOnChangeFocus member is TRUE, the scrolling to the focused control is performed after the user presses the Up or Down keys too, not only after pressing the Tab key. CBCGPRibbonBar::EnableCommandSearch: addressed the issue with the too-wide default width of the search box control in the high DPI environments. CBCGPGridCtrl: addressed the issue with the incorrect location of the edited item button after the grid or column resizing. CBCGPTreeCtrlEx: the tree control item is selected now when the users click on the right-aligned badge. CBCGPGridCtrl: addressed the issue of displaying an unnecessary "out of filter" prompt when the grid is empty (no items have been added.) CBCGPSVGImage: addressed issue with incorrect luminosity inversion of the text elements (used in the font-based icons). CBCGPLightBoxDialog: addressed issue with incorrect restoring of the light box options in calling the CloseMe method with parameter bDisableAnimation = TRUE.