BCGControlBar Professional Edition Version: 31.2. Released: 4/15/2021 Ribbon Bar Improved Ribbon commands search: CBCGPRibbonCommandsMenuCustomItems has a new member m_strInputPrev (contains a previously typed text). New member of CBCGPRibbonCommandSearchOptions structure m_bAlwaysRebuildResultsMenu specifies whether the search results list should be always re-created. By default, this member is FALSE. Added new virtual method CBCGPVisualManager::GetRibbonCommandsComboIcon. Override this method in your custom visual manager if you wish to replace a default (light bulb) icon with your own. Added ability to specify a Minimize button location: this button can be positioned on the right side of the tabs row (as in MS Office 2010 applications) - see screenshot - or on the bottom-right side of category area (like MS Office 2013 - 2019) - see screenshot. Call new method CBCGPRibbonBar::SetMinimizeButtonLocation to specify the Minimize button location or set new CBCGPAppOptions member m_bRibbonMinimizeButtonAutoLocation to TRUE (in this case the minimize button will automatically appear on the bottom-right side of the category area if Office 2013-2019 visual theme is activated). Toolbars and Menus BCGM_RESETTOOLBAR registered message: LPARAM contains a pointer to CBCGPToolBar object now. CBCGPToolBar::SetNonPermittedCommands: added a new optimal parameter "bCheckForChanges" (FALSE by default). If this parameter is TRUE and list of non-permitted commands is not changed, no any actions are performed. New class CBCGPToolbarSlider implements a CBCGPToolbarButton-derived toolbar control with embedded CBCGPSliderCtrl (see screenshot). Please take a look at Slider and GraphicsManagerDemo samples to this control in action. Dialogs and Forms CBCGPPropertySheet: added a new virtual method IsPageTransitionReversedOrder. Override this method if you wish to specify a custom page transition direction. New method CBCGPPropertySheetCtrl::GetRecommendedSize returns a size required for displaying all pages and navigation (tab) control. Please take a look at PropSheetDemo sample to see how to use this method. MDI Windows and Tabs Improved a frame captions bar: Added ability to automatically create custom caption buttons on the detached frame captions: CBCGPFrameCaptionBarOptions has a new member m_bSyncButtonsBetweenFrames. Implemented displaying caption right of MDI tabs (see screenshot): CBCGPRibbonCaptionMDITabsOptions has a new member m_bDrawTitle. Please take a look at FrameCaptionDemo sample to see these additions in action. CBCGPMDIFrameWnd has a new virtual method GetFrameCaptionMDITabsTitle. By default, this method returns a frame title, but if you wish to display another caption right of MDI tabs located on the frame caption, you may override this method. Chart Control Improved chart thumbnails: Implemented thumbnail mode for the Chart advanced legend (see screenshot): new methods SetThumbnailMode and IsThumbnailMode were added to CBCGPChartLegendVisualObject class. Developer can specify now a scaling ratio of all text labels in the chart thumbnails: SetThumbnailFontRatio and GetThumbnailFontRatio were added to CBCGPChartVisualObject class. Improved thumbnail appearance in Torus, Scatter and Ternary charts. 3D charts walls drawing: Added ability to enable/disable walls jointing: new methods SetWallsJoint and IsWallsJoint were added to CBCGPChartDiagram3D class. Improved walls appearance (both in thin and thick modes) (see screenshot). Gauge Controls CBCGPKnob: implemented disabled knob control drawing. CBCGPCircularGaugeImpl: improved interactive mode - the pointer cannot be moved out of scale bounds anymore. You may customize this behavior by overriding new virtual method "IsPointerMovementAllowed". CBCGPNumericIndicatorImpl has the following additions: Invisible segments drawing (see screenshot). SetDrawInvisibleSegments, IsDrawInvisibleSegments, SetInvisibleSegmentsOpacity and GetInvisibleSegmentsOpacity methods were added. Indicator state (see screenshot). A state can be Normal, Error or Off. SetState and GetState methods were added. Internal padding (see screenshot). SetPadding and GetPadding methods were added. Horizontal and vertical alignment (see screenshot). SetHorizontalAlign, GetHorizontalAlign, GetVerticalAlign and SetVerticalAlign methods were added. Please take a look at BCGPGaugesDemo example ("Digital indicator" view) to see these additions in action. Diagram Control Implemented ability to prevent diagram fonts (text formats) scaling when the diagram is being scaled: a new method EnableScalingFonts added to CBCGPVisualContainer class. In addition, CBCGPGlobalUtils::ScaleByDPI(CBCGPVisualContainer& container) has a new optional parameter bScaleFonts (TRUE by default). Disabling font scaling is useful when diagram has a default (already scaled by DPI) font. Improved diagram appearance: a regular font is used now as a default (see screenshot). Please call a new global method CBCGPDiagramTextDataObject::SetDefaultFont If you need to specify a default diagram font. For example, if you wish to use a bold default font (as it was in the previous product versions), please call CBCGPDiagramTextDataObject::SetDefaultFont(globalData.fontBold) before creating the diagram control. Controls CBCGPTabWnd: implemented tab icon location (see screenshot). Prior to this version the icon was always positioned left of label, but now you may specify the icon position by calling new method CBCGPTabWnd::SetIconLocation. Please take a look at TabControl sample to see this new feature in action. CBCGPComboBox: added CComboBoxEx-like icon displayed left of the edit box (see screenshot). SetImageList methods have a new optional parameter bDisplayIconLeftOfEditBox - set it to TRUE if you wish to display an icon. CBCGPEdit: new method EnableIconOnLeft allows to display an icon on the left side of control (see screenshot). CBCGPSliderCtrl has the following additions and improvements: New method SetPositionOnClick allows to change the thumb position to the clicked location when user clicks the channel. New method SetReversedOrder allows to swap minimal and maximal range values. This is useful when you have the vertical slider and need to display the min value on the bottom (see screenshot). Please take a look at BCGPControls example ("Slider control" view) to see the new features in action. Graphics Manager CBCGPGraphicsManager: improved geometries scaling (please take a look at GraphicsManagerDemo sample). CBCGPImage: constructors with HICON and HBITMAP have a new optional parameter "bAutoDestroy" (FALSE by default). If this parameter is TRUE, icon/bitmap will be automatically destroyed in CBCGPImage destructor. Miscellaneous Implemented Windows 10 light/dark modes support: A new method BCGPGLOBAL_DATA::IsAppDarkMode tells whether default application mode is a dark. Added new registered message BCGM_ONWINDOWSAPPMODECHANGED. This message is sent to the main application window when Windows app mode is changed. To take advantage of this new feature, in your application startup code and BCGM_ONWINDOWSAPPMODECHANGED message handler, set appropriate visual theme based on globalData.IsAppDarkMode() return value (e.g. Office 2016 Dark / Office 2016 White). Please take a look at BCGPEdgeDemo example to see this feature in action. Added new registered message BCGM_ONGLOBALFONTSCHANGED: sent to the main application window when global fonts (like globalData.fontRegular) are updated. A global method BCGPTrackMouse is exportable now. CBCGPToolBarImages: added new global member "m_bAlwaysCreateShadowImage" (default is FALSE). If this member is TRUE, the shadow image is created in all visual themes. CBCGPHotSpotImageCtrl: added support for tooltips specified in SVG file ("title" and "desc" attributes). Please take a look at BCGPVisualStudioGUIDemo example ("Start page") to see this feature in action. CBCGPBreadcrumb::SelectSubPath: added new optional parameter "delimiter" ('\' by default). CBCGPToolTipParams: added new flag "m_bHideDuplicatedDescription" (FALSE by default). If this flag is TRUE and tooltip name is the same as description, only name will be displayed in tooltip. A new helper class CBCGPPostRedraw simplifies implementation of flicker-less controls. CBCGPDrawManager: added a new method DrawEdge. This method is very similar to CDC::DrawEdge, but edge is rendered using current theme colors and can be drawn on DWM window area. CBCGPSVGBase: added support for "title" and "desc" SVG node attributes; GetName and GetDescription methods were added. Shell manager: added custom ("Quick access") folders support (see screenshot). These folders can be specified using new CBCGPShellManager's class method AddCustomFolders and will be displayed in all CBCGPShellTree controls. If you don't wish to display custom folders in specific Shell tree control, please call a new CBCGPShellTree's method SetDisplayCustomFolders with parameter bSet = FALSE. Please take a look at ThemedFileDialog sample to see this new feature in action. A new virtual method CBCGPGridCtrl::OnKeepGroupWithChildrenOnNewPrintPage specifies whether a grid group should be printed from the new page. By default, it returns FALSE. Examples and Samples BCGPControls: demonstrates how to add an icon to the edit box and combo box with CBS_DROPDOWN style and slider control improvements. BCGPEdgeDemo: added default (specified by the Windows 10 settings) visual theme (light or dark). BCGPGaugesDemo: demonstrates new digital indicator features such as state, drawing invisible segments and internal padding. BCGPVisualStudioGUIDemo: added demonstration how to create SVG-based start page. MMStyleExample: this example was fully redesigned (see screenshot): Added demonstration how to create toolbar with different image lists per state (normal, highlighted, pressed and disabled). Added volume knob control. Added digital numeric indicator displaying the current position. Added slider which allows to change the current position. Added dark/light themes. GraphicsManagerDemo: added geometries scaling demonstration (using new CBCGPToolbarSlider control) - see screenshot. Slider: demonstrates a new CBCGPToolbarSlider control. SVGViewDemo: added SVG background support and improved drawing SVG with custom view box. TabControl: added demonstration how to change a tab icon location. ThemedFileDialog: added custom folders demonstration (see screenshot). PropSheetDemo: demonstrates how to create a property sheet control with optimized (recommended) size and property sheet with tab icons located on bottom (see screenshot). FrameCaptionDemo: added MDI tabs caption demonstration. RibbonGadgets: demonstrates how to specify Ribbon minimize button location. BCGPChartExample: Added chart legend thumbnail demonstration. Moved chart data loading ("Data Binding" view) to the working thread. BCGPOrganizer: revised outlining settings for Macros View. Fixes CBCGPGraphicsManagerGdiPlus: addressed issue with incorrect background of the image created from HICON. CBCGPListBox: addressed issue with incorrect control redrawing during selection of multiple items by keyboard. CBCGPPopupMenu: addressed issue with displaying incorrect numbers for recent files if file index is 10 or greater. CBCGPStatic: addressed several issues with drawing themed control borders. CBCGPGanttChart: corrected header text label vertical offset. CBCGPSVGImage: addressed some issues with SVG definitions loading. CBCGPPropertySheet: addressed issue with incorrect dialog height in case of large-size tab control. CBCGPSVGImageList: addressed issue with loading resources with hexadecimal IDs in LoadSVG method. CBCGPTreeCtrlEx: addressed some issue in GetNextItem method (the code is more compatible now with standard Tree view control). CBCGPODBCGridCtrl: addressed issue with closing control created on the dialog box. CBCGPGraphicsManagerGdiPlus: addressed some issues with processing gradient stops in the gradients.