Release Notes BCGControlBar Professional Edition Version: 33.5. Released: 05/31/2023 Ribbon Bar Implemented Ribbon customization data import/export (see screenshot). By default, the customization data is stored in a file with extension ".BCGPRibbonUI" (specified by new member CBCGPRibbonCustomizationOptions::m_strExportedFileExt, if this member is empty, import/export will be disabled). By default, you can import customization data only from file saved by application with the same name, but you can change this behavior by specifying CBCGPRibbonCustomizationOptions::m_strExportedSignature. Please take a look at BCGPMSOfficeDemo example to see this feature in action. Added a new registered message BCGM_ON_BEFORE_TOGGLE_RIBBON_MINIMIZE_STATE: this message is fired before changing Ribbon bar minimized state. Ribbon combo box: significantly improved drop-down list performance. You may add hundreds of combo box items without any performance impact. Please take a look at our RibbonGadgets sample application ("Edit and Combo" tab) where we demonstrate how to add 500 items to the combo box. Ribbon Designer: added a new Ribbon Checker tool (see screenshot). Using this tool, you can easily verify key tips state and discover errors such as duplicate or inaccessible key tips and warnings (like missing key tips). MDI Windows and Tabs CBCGPMDITabParams: a new member m_bActivateRightmostTabOnClose specifies whether the rightmost tab should be activated after closing the current MDI tab. Please take a look at MDITabsDemo sample application to see this new feature in action. CBCGPMDIChildWnd: added a new static member m_bAutoAdjustMaximizedInHighDPI. Set this member to TRUE to fix Windows bug with maximized child frame position and size in the high-DPI mode. Grid and Report Controls Implemented ability to automatically expand collapsed groups during text finding. Please call a new method CBCGPGridCtrl::EnableSearchAndExpandCollapsedGroups to enable/disable this feature. Take a look at BCGPGridExample ("Custom Colors" view) to see this new feature in action. CBCGPGridCtrl: a new virtual method OnBeforeReplaceItem is called by the framework before grid item replacing. Override this method to add some custom actions such as existing grid item data cleanup or customizing a new item before adding it to the grid. Grid conditional formatting: CBCGPGridCtrl has the following new virtual methods GetDataBarPerc, GetDataColorScalePerc, GetDataIconPerc. Override them to dynamically specify conditions. Improved rows/header check boxes support: added check box intermediate state and improved check boxes appearance (see screenshot). A new helper method CBCGPGridCtrl::ScrollToRow allows to vertically scroll the grid to the specified row. Improved in-place editing support. If no grid cell is selected and a user starts typing, then the editing will be started on the first (top-left) cell. To customize this behavior, please override a new virtual method OnEditNoSelection. Improved keyboard navigation in the filter bar: when user presses Enter in the filter bar edit box and filtered content is not empty, the focus is moved to the 1-st visible item in column. Controls CBCGPButton: added a new global member m_bUseTitleFontInCommandLinks (default is FALSE). When this member is TRUE, the title of the command link will be drawn using a title (smaller than caption) font that makes control appearance closer to the standard Windows command link (see screenshot). CBCGPDateTimeList: improved highlighted buttons appearance (see screenshot). CBCGPBreadcrumb: implemented breadcrumb item tooltip (see screenshot). EnableTooltip and IsTooltipEnabled methods were added to this class. Please take a look at BCGPControls example to see this feature in action. CBCGPBreadcrumb: a new message BCCM_ISMENUDROPPED tells whether an item menu is dropped-down. CBCGPStatic: added a new global member m_bCheckAlignmentInSizeToContent (default value is FALSE). When this value is TRUE, SizeToContent takes into account control horizontal alignment (e.g., when alignment is right, the right position remains unchanged). CBCGPWebView2Ctrl: the following new methods were added to this control: NavigateWithRequest: implements functionality of sending request using GET and POST methods PostWebMessage: allows to post a specified message to the top-level document in WebView2 (the message is either JSON or simple text) Shell Management CBCGPFileDialogEx: added OFN_CREATEPROMPT flag support. Added ability to specify whether special folders (such as compressed folder, recycle bin or library folder) are displayed in shell tree or shell breadcrumb controls. SetFilter and GetFilter new methods were added to CBCGPShellBreadcrumb and CBCGPShellTree classes. Miscellaneous CBCGPToolBar: added a new global member m_bDPIAwareControlWidths (default value is FALSE). When this member is TRUE, all child controls such as combo or edit boxes are scaled automatically when DPI is changed. Please take a look at BCGPVisualStudioGUIDemo example to see this feature in action). Added a new class CBCGPWaitCursor: the functionality of this class is the same as CWaitCursor, but it can be used in DLLs where application object is not initialized and AfxGetApp (called inside CWaitCursor methods) always returns NULL. All CWaitCursor objects were replaced with CBCGPWaitCursor. Implemented frame custom caption buttons support (see screenshot). Prior to this version, the developer was able to add custom (user-defined) buttons to the Ribbon caption or Ribbon frame caption bar only. Starting this version, you can add a simple button to any frame or dialog captions (owner-draw mode only). The following new methods were added to CBCGPDialog, CBCGPFrameWnd, CBCGPMDIFrameWnd and CBCGPPropertySheet classes: AddCustomCaptionButton EnableCustomCaptionButton IsCustomCaptionButtonEnabled RemoveAllCustomCaptionButtons Please take a look at CaptionButtons sample application to see this new feature in action. CBCGPKeyboardManager: added ability to enable/disable to assign printable characters to the keyboard accelerators. By default, user can use any character such as 'a' and, if your view is a text editor, typing 'a' character is not possible anymore (command associated with 'a' will be executed instead). To prevent this, call new static method CBCGPKeyboardManager::AllowPrintableCharacters with parameter FALSE. This new feature is demonstrated in our BCGPMSOfficeDemo and BCGPVisualStudioGUIDemo examples. A new class CBCGPOccManager (derived from COccManager) is used for global replacement of "MS Sans Serif" fonts in all dialogs with "MS Shell Dlg" or "MS Shell Dlg 2". To use this class: Instantiate CBCGPOccManager global variable. Pass a pointer to this variable to AfxEnableControlContainer (usually called in application's InitInstance method). Since our library dialogs are still VC++ 6.0-compatible and old "MS Sans Serif" font is used, we added this class usage to all our examples and AppWizard-generated code. Implemented DPI-aware tooltips: tooltip is automatically scaled now when user moves the parent window to the monitor with other DPI or changes the current display scale. To enable this feature, please set one of the following new members to TRUE: CBCGPWinApp::m_bDPIAwareTooltips or CBCGPToolTipParams::m_bDPIAware. Improved Application Wizard for VS 2005-2017 (see screenshot). Since many of our customers are still using these versions, we decided to add most remaining features such as new visual themes, multi-views single document support and SVG icons support to the wizard. ZLib + Lpng libraries (used for .png image rendering) were updated to the latest versions. Examples and Samples BCGPControls: added command link caption smaller font, breadcrumb tooltips, shell controls filter and extended tree header check box demonstrations. BCGPEdgeDemo: added WebView2 print demonstration. BCGPGridExample: added check box in row, search and expand collapsed groups, improved header icons appearance and demonstration how to add custom controls to the grid row in the virtual mode. BCGPMSOfficeDemo: demonstrates how to disable printable characters in the keyboard customization and Ribbon customization import/export. BCGPVisualStudioGUIDemo: demonstrates how to disable printable characters in the keyboard customization and DPI-aware toolbar combo boxes. CaptionButtons: demonstrates how to add a custom button to the frame caption. MDITabsDemo: added demonstration of new ActivateRightmostTabOnClose feature. RibbonGadgets: demonstrates a ribbon combo box with hundreds of items. TooltipDemo: added demonstration of DPI-aware tooltip custom icon. CBCGPControls: added demonstration of breadcrumb items tooltip, small caption font of the command buttons and highlighted date/time list buttons. BCGPChartExample: for the better appearance and usability, all slider controls (for the chart options) are in the "progress" mode now. Fixes CBCGPRibbonBar: addressed issue with unexpected displaying a contextual tab in some cases. CBCGPRibbonBar: addressed issue with an active tab redrawing after animation on the slow or busy machine. CBCGPRibbonButton: addressed issue with displaying custom (user-defined) icon on the button tooltip. CBCGPRibbonEdit: improved control appearance when both icon and text label are specified. CBCGPBaseRibbonElement: a legacy ampersand character (in control text label) is converted to the Ribbon key tip only if control is located on the popup menu (in the previous product versions, the ampersand was converted to key tip in case of the popup categories and panels too). CBCGPDHtmlDialog: this component is excluded now if _AFX_NO_OCC_SUPPORT is specified. CBCGPStatic: SizeToContent method correctly calculates size when control has the border. CBCGPStatic: addressed issue with changing text of the hidden static control located on the Ribbon backstage view. In the previous versions this control became visible after setting text. CBCGPEdit: the focus is moved now to the edit box when control receives EM_SHOWBALLOONTIP message (as in the standard Windows edit box). CBCGPVisualManager: addressed some issues with a scaled check box drawing in the various visual themes. CBCGPDlgPopupMenu: addressed issue with child control repainting after menu resizing. CBCGPPopupMenu: fixed scrollable menu position in high-DPI environment when the menu is dropped-down from the toolbar button or ribbon control. CBCGPOutlookBarPane: addressed issue with dimension of the selected item after visual manager changing in full-row width mode. CBCGPMenuButton: addressed issue with incorrect drop-down menu location in the right-to-left mode. CBCGPFileDialogEx: the file list sorted column and sorting orders remain unchanged now after current folder changing. CBCGPGroup: draw by parent flag is correctly initialized now in PreSubclassWindow method. CBCGPBrowseForFolderDlg: compressed folders cannot be expanded anymore in the themed dialog (similar to the standard Windows Browse for Folder dialog). Frame borders: addressed issue with incorrect border size when the window is maximized and Windows 11 Mica material is applied to this window. CBCGPMDIFrameWnd: addressed issue with incorrect MDI child window active state upon main frame window activation.