BCGControlBar Professional Edition Version: 33.3. Released: 11/7/2022 Ribbon Bar Improved Ribbon customization: Added ability to move custom control between custom groups and move custom groups between custom tabs. Revised mechanism of saving/restoring custom groups. CBCGPRibbonButton::SetMenu has a new, optional parameter "bKeepMenuHandle" (FALSE by default). When this parameter is TRUE, the menu is not converted to sub-items list. Extended Ribbon Quick Access Toolbar (QAT) appearance customization (see screenshot). The following new features were added in this version: The QAT can be hidden now: call new method CBCGPRibbonBar::SetQuickAccessToolbarVisible to toggle QAT visibility. You can display the QAT Ribbon controls with text labels (see screenshot): call new method CBCGPRibbonBar::SetQuickAccessToolbarLabels to show/hide these labels. You can specify which QAT customization features are available for the user (in the QAT editing menu): call new method CBCGPRibbonBar::SetQuickAccessToolbarEditFlags with combination of the following flags: BCGPRIBBONBAR_QAT_HIDE_ALLOWED, BCGPRIBBONBAR_QAT_SHOW_LABELS_ALLOWED and BCGPRIBBONBAR_QAT_CHANGE_LOCATION_ALLOWED. The recent QAT state is automatically saved in the application settings and will be restored on the next application run. Toolbars and Menus CBCGPPopupMenu::HideRarelyUsedCommands method is a virtual now. CBCGPKeyboardPage (keyboard shortcuts customization page): added tooltips for the wide (partially visible) command names (see screenshot). Gauge Controls CBCGPAnalogClock has the following additions and improvements: EnableSecondHand method has a new, optional parameter bSmoothMovement. When this parameter is TRUE and seconds needle is enabled, the needle is smoothly moved between the seconds tick marks. Please take a look at BCGPGaugesDemo example (Analog Clock view) to see this new feature in action. A new virtual method OnGetClockTime allows to specify a custom time. CBCGPGaugeImpl: implemented rounded corners support for several gauges. SetCornerRadius and GetCornerRadius methods were added to this class. You can specify the rounded shapes in the following gauge types: CBCGPColorIndicatorImpl (see screenshot) CBCGPLinearGaugeImpl (see screenshot) CBCGPNumericIndicatorImpl (see screenshot) CBCGPNumericIndicatorImpl: added digit type: BCGP_NUMERIC_DIGIT_SEGMENTS_7 (see screenshot) BCGP_NUMERIC_DIGIT_SEGMENTS_7_DOTS (see screenshot) BCGP_NUMERIC_DIGIT_SEGMENTS_16 (see screenshot) Call new method SetDigitType to specify this type and GetDigitType to obtain it. New gauges CBCGPNumericDateTimeIndicatorImpl and CBCGPDigitalClock implement a digital date/time indicator and digital clock (see screenshot). Please take a look at BCGPGaugesDemo and MMStyleExample examples to see these new gauges. CBCGPNumericIndicatorImpl: added new indicator state BCGP_NUMERIC_INDICATOR_STATE_NOTREADY (see screenshot). Visual Manager and Themes CBCGPMenuButton: improved separator appearance (split mode) in the various visual themes. In the previous versions the separator was always drawn as etched line. Improved appearance of expand/collapse button in various visual themes (OnDrawExpandingBox method). The colors returned by CBCGPVisualManager::GetNumericIndicatorColors method are more contrast now. Improved appearance of the Ribbon check box and radio button on the customization list item. CBCGPSliderCtrl: a channel has rounded corners in Office 2022 visual theme (see screenshot). Improved system caption buttons appearance in visual themes with owner-draw captions such as Visual Studio 2019 (see screenshot) or Office 2022 (see screenshot). The icons are the same as in Windows 10/11, Visual Studio and MS Office applications, and buttons are wider. Controls CBCGPInfoBoxRenderer: implemented info box printing (see screenshot). CBCGPButton: added a new global flag m_bDontSetCapture (FALSE by default). When this flag is TRUE, SetCapture/ReleaseCapture are never called and mouse tracking will be used instead. This flag is useful for applications sensitive for the mouse/keyboard capturing changes. CBCGPListBox: added new attribute AutoToolTips (SetAutoToolTips and GetAutoToolTips access methods). When this attribute is TRUE, tooltip will be automatically displayed near list box item with not fully-displayed (too wide) text. MSAA and CodedUI Tests CBCGPURLLinkButton has a correct role (system link) now. Improved accessibility support for some Ribbon controls such as Ribbon Gallery, Ribbon Undo button, Ribbon Quick Steps and others. CBCGPGroup with check box or radio button has correct default action and description. CBCGPCalculator: control name is "Calculator" now and control value is the same as displayed formatted text. CBCGPInfoBoxCtrl returns the info box text as accessibility name. Improved accessibility support for Calendar (Planner) control. Edit control Implemented ability to toggle comments around selected text using single typed character (e.g. '/' in C++ language). The easiest way to enable this feature is adding a new tag CommentString to your XML settings file. Alternatively, you may call a new method CBCGPEditCtrl::EnableCommentingSelectedText. In addition, the following new methods were added to CBCGPEditCtrl class: IsCommentingSelectedTextEnabled CommentSelectedText CommentText GetCommentChars Please take a look at BCGPVisualStudioGUIDemo example to see this new feature in action. Added a new method HasSelection: this method tells whether some text is selected. Miscellaneous Stdafx.cpp/.h files were renamed to BCGPStdAfx.cpp/.h (to avoid possible incorrect precompiled header files references in user application). CBCGPBaseVisualObject: a new virtual method OnSystemSettingChange is called when parent window is receiving WM_SETTINGCHANGE message. CBCGPPropertyManager: method LoadValuesFromRegistry has a new, optional parameter 'bNotifyChanges' (FALSE by default). If this parameter is TRUE and property value loaded from the registry is not default, OnPropertyChanged is called for this property. CBCGPLightBoxDialogOptions has a new member m_bDisableParentWindow (default value is FALSE). When this attribute is TRUE, the whole parent frame is disabled and grayed out, so user is not able to resize or move it (see screenshot). Please take a look at LightBoxDemo sample to see this new feature in action. A new helper class CBCGPInfoBoxView simplifies creating CView-derived class with embedded info box. If you need to create a simple information view, please derive your class from CBCGPInfoBoxView and call SetInfoText in the class constructor. Many of our samples are using this class now. Improved printing of the several controls: Calendar (Planner): a print content is same as view content. Grid and Edit controls: improved font and layout used for the printing. CBCGPGridCtrl: the following new access methods were added (for obtaining/changing default exporting flags): SetDefaultExportToHtmlFlags GetDefaultExportToHtmlFlags SetDefaultExportToCsvFlags GetDefaultExportToCsvFlags Examples and Samples BCGPControls: added auto-repeat push button demonstration to "Push Buttons" view. BCGPGaugesDemo has the following additions and improvements: "Analog Clock" view demonstrates a seconds' needle smooth movement. Added a new view "Digital Clock" that demonstrates a new Digital Clock gauge. Added "Rounded Corners" option to some views. Digital Indicator view demonstrates new "Not Ready" state and Digit Types. "Car Dashboard" view: a numeric indicator was replaced with a new digital clock gauge. MMStyleExample: a numeric indicator (used for displaying a current position in the played song) was replaced with a new date/time digital indicator. BCGPVisualStudioGUIDemo: added demonstration how to comment a selected text in our edit control. BCGPGridExample: the user interface of this example was fully redesigned (see screenshot): Toolbars/Menu UI was replaced with MS Excel-like Ribbon-based UI. Current view-specific options are located now on the Ribbon contextual tabs and we added some new options illustrating grid control features. BCGPMSOfficeDemo: added demonstration how to use new customization features of the Ribbon QAT. LightBoxDemo: added "Close Light Box by Clicking Outside" and "Disabled Parent Window" options demonstration. RibbonGadgets: all Ribbon bar existing and new options were moved from the menu to new property grid (see screenshot). Fixes CBCGPGridCtrl: addressed issue with incorrect column width when column auto-size is specified and current grid zoom factor is not 100%. CBCGPComboBox: addressed issue with drawing text when no font is specified. CBCGPDateTimeCtrl: dropped-down date/time list is closed now when user presses Alt key. CBCGPDrawManager: DrawRoundRect correctly draws rectangle when corner radius is too small and lpRectClip is specified. Removed unnecessary calls to CFrameWnd::GetMessageString for internal commands (calling this method caused "Warning: no message line prompt" in the debug output window. CBCGPListBox: addressed issue with incorrect value of the default tab stop. CBCGPPopupMenu::DrawFade: addressed issue with incorrect shadow dimension. CBCGPRibbonCheckBox: addressed issue with incorrect vertical alignment when control is located on the Ribbon tabs row. CBCGPWinUITiles: addressed issue with mouse clicking on the same tile without cursor moving between clicks. CBCGPFileDialogEx: addressed some localization issues. CBCGPPropertyManager: addressed issue with incorrect processing 'collapsed' attribute for the values list property. CBCGPLightBoxDialog: a shadow window has the same shape (rounded corners) as parent a frame. CBCGPMessageLightBox: addressed issue with incorrect layout when the message box is displayed over a narrow parent frame. Addressed some issues with displaying double or triple borders (e.g., when WS_EX_STATICEDGE and WS_EX_CLIENTEDGE extended styles were specified together) in controls with custom visual themes. CBCGPDropDownList (used in the Ribbon combo box and auto-complete lists): addressed issue with unnecessary scrolling if selected item is fully visible. CBCGPPopupWindow: addressed issue with incorrect dialog template size in case of some non-English dialog resources. CBCGPWindowsNavigator: the left (Panes) column now automatically scrolls to ensure the selected pane is visible. CBCGPWindowsNavigator: the window doesn't have unnecessary space on bottom when all items don't have descriptions/paths. CBCGPRibbonButton: menu and command areas are cleaned-up now if after calling RemoveSubItem/ RemoveAllSubItems list of subitems is empty. CBCGPFileDialogEx: addressed issue with incorrect initial folder when input file name does not contain path. CBCGPEditCtrl: addressed issue with incorrect indentation caused by Undo operation. CBCGPEditCtrl: addressed issue with incorrect error indication when a part of word is being selected. CBCGPGridCtrl: fixed virtual row drawing artefact in some cases. CBCGPToolBoxPage: addressed issue with displaying tooltip of item with double ampersand in the label. CBCGPGridCtrl: addressed issue with clicking check box located on disabled grid row.