BCGControlBar Professional Edition Version: 30.3. Released: 12/16/2019 Visual theme easy chooser. Adding and maintaining the visual themes has never been so easy: instead of specifying a lot of menu items associated with visual themes, simply create one menu item that will be automatically replaced with themes list and call SetApplicationLookMenu in your application's class constructor. A second parameter of this method specifies which themes can be used by application (see screenshot). This method can be called for both menu- and Ribbon-based applications. For the dialog-based application you can use CBCGPThemeSelectorComboBox (see screenshot): this is CBCGPComboBox-derived control with list of themes. When user chooses a theme from this combo, this visual theme will be automatically activated. Please take a look at BCGPControls and WordPad examples to see this control in action. Themed File Dialog. A new class CBCGPFileDialogEx implements Windows-like File Dialog (see screenshot). In general, API of this class is very similar to CFileDialog, but all customization methods (like adding custom controls) are not implemented "out of the box" and should be developed in derived classes (we demonstrate this approach in new sample ThemedFileDialog and updated SVGViewDemo sample). To use this new dialog in the standard ID_FILE_OPEN or ID_FILE_SAVE command handlers, simply set m_bThemedFileDialog to TRUE in your application class constructor (you can see this in BCGPMSOfficeDemo, BCGPVisualStudioGUIDemo and other examples and samples). Important: since we cannot guarantee that behavior of this dialog is absolutely the same as you can see in the standard Windows File Dialog, we strongly recommend to add some option to your program that allows to specify which File Dialog (standard or themed) will be used (we've added this option to all our Designer applications). Ribbon Bar CBCGPRibbonSeparator: added new, optional parameter 'bVisible' to the class constructor. In addition, CBCGPRibbonPanel::AddSeparator method has a new, optional parameter bVisible. Non-visible separator intends for the control layout customization: for example, you may group controls by columns, but there is no vertical line between the specified columns. CBCGPRecentFilesListBox displays themed file dialog if CBCGPWinApp::m_bThemedFileDialog is TRUE (see screenshot). Class CBCGPRibbonSpinButtonCtrl is exportable now: you may override CBCGPRibbonEdit:: CreateSpinButton and create your custom up/down (spin button) control. CBCGPRibbonStatusBar: added simplified icons support (see screenshot). Call new method CBCGPRibbonStatusBar::SetIconsStyle to specify whether icons located on the Ribbon status bar should be simplified. A new virtual method CBCGPVisualManager::IsSimplifiedRibbonStatusIcon specifies whether a Ribbon status bar icon should be simplified or not in the currently activated visual theme by default. BCGPMSOfficeDemo example illustrates this new feature. CBCGPRibbonStatusBarPane: implemented pane animation based on SVG icons list. A new method SetAnimationList with 2-nd parameter szFrame (icon size) was added to this class. CBCGPRibbonToolsPage displays themed file dialog if CBCGPWinApp::m_bThemedFileDialog is TRUE (see screenshot). CBCGPRibbonUndoButton: added optional, custom labels - ("Cancel", "Undo one action" and "Undo multiple actions" format) - to the class constructor. CBCGPRibbonEdit: added support for multi-line edit controls (ES_MULTILINE style). Please take a look at RibbonGadgets sample to see how to implement multi-line Ribbon Edit in CBCGPRibbonEdit-derived class (see screenshot). Toolbars and Menus CBCGPToolBarImages::AddImage and CBCGPToolBarImages::UpdateImage methods have 2 optional parameters now: bFitImage - fit image to the current size and bPremultiplyAlpha. CBCGPToolBarImages: added new methods Attach and Detach. CBCGPStatusBar::SetPaneTextColor: added a new optional parameter 'clrTextDisabled'. CBCGPOutlookWnd::SetToolbarImageList: has a new, optional parameter bAutoScale. Dialogs and Forms CBCGPSplitterWnd: implemented a new dialog mode. By default, CSplitterWnd (base class of CBCGPSplitterWnd) is forwarding all child control notifications to the parent frame and this behavior is not so comfortable for developer when splitter is created on the dialog. Call new method CBCGPSplitterWnd::SetDialogMode and all notifications and commands will be sent to the parent dialog. CBCGPProgressDlgParams: the following new members were added to this control: m_bProgressSmoothAnimation - the progress bar is smoothly moving in the progress dialog. m_bProgressSetPosLighting- progress bar lighting effect. m_bNoProgressBorder - no frame around the progress control (suitable for Visual Manager VS 2012 and higher only). Please take a look at ProgressDialogDemo sample to see this feature in action. Tasks Pane and Toolbox CBCGPTasksPane: implemented Office 2013-2019-like navigation tabs (see screenshot). Call new method EnableNavigationTabs to enable/disable navigation tabs. Please take a look at TasksPane sample to see this new feature in action. CBCGPTasksPane: improved groups and tasks vertical scrolling. Diagram Control CBCGPDiagramShape: a new static member m_bShadowsEnabled allows to disable shadows for all objects of CBCGPDiagramShape-derived classes. By default, this member is TRUE. CBCGPDiagramShape: added a new virtual method IsShadowEnabled. Override this method to disable shadows for your CBCGPDiagramShape-class or for the specified shape object. The default implementation uses CBCGPDiagramShape::m_bShadowsEnabled, which is TRUE by default. Grid and Report Controls CBCGPGridCtrl: custom text/image margin support (see screenshot). Override new virtual method(s) GetTextMargin, GetTextVMargin and GetImageMargin to specify custom cell margins. CBCGPGridItem::Select method is virtual now. CBCGPGridCtrl: SetColorTheme and SetVisualManagerColorTheme methods are virtual now. Property Grid Control CBCGPFileProp constructor has a new, optional parameter bThemedFileDlg. Specifies whether the file dialog (appears on button click) is themed. CBCGPPropList: if control is not themed, in-place tooltip will be drawn using default Windows colors. Controls CBCGPBreadcrumb: new method RefreshDynamicItem updates content of the dynamic breadcrumb node. CBCGPBreadcrumb::SelectSubPath: this new method allows navigating to the current (selected) node-relative path. CBCGPBreadcrumb: added new virtual method PrepareInplaceEditRes. This method is called when user presses Enter key at in-place edit mode. Override this method to change edit box text value. CBCGPEdit::EnableFileBrowseButton: added a new, optional parameter bThemedFileDlg. Specifies whether the file dialog (appears on button click) is themed. CBCGPProgressCtrl: the following new attributes were added to this control: m_bSetPosSmoothAnimation - the progress bar is smoothly moving upon SetPos calling. m_bSetPosLighting - lighting effect after SetPos calling. m_bDrawFrame - drawing frame around the control (suitable for Visual Manager VS 2012 and higher only). Please take a look at SkinnedDialog sample to see this feature in action. CBCGPTreeCtrl: new method EnableThemedInplaceTooltip enables/disables themed in-place tooltips. CBCGPListCtrl: new method EnableThemedInplaceTooltip enables/disables themed in-place tooltips. CBCGPListCtrl: implemented custom (owner-draw) icons support. Override a new virtual method IsCustomIcon to tell whether a list control item has the custom icon and OnDrawCustomIcon to perform the icon drawing. CBCGPTreeCtrlEx: added TVS_SHOWSELALWAYS style support. Shell Management CBCGPShellTree: new method IsNotSynchronizedWithList tells whether the shell tree control is synchronized with related shell list control. CBCGPShellTree::RefreshFolder method is public now. CBCGPShellTree::SelectPath has a new optional parameter bExpandNodes. When this parameter is FALSE and node is not currently expanded, the framework selects a 1-st visible (expanded) parent node. CBCGPShellTree::SetRelatedList has a new optional parameter bDontSyncOnSelectByKeyboard. When this parameter is TRUE and tree node was selected by the keyboard, the related shell list is not synchronized with the tree until user presses Return button. CBCGPShellTree: a new virtual method IsExcludeFolder allows to filter-out tree nodes in the derived class. CBCGPShellList: added thumbnails support ("Large Icons" mode only, see screenshot). Call new method EnableThumbnails to enable/disable thumbnails and AreThumbnails to check if thumbnails are enabled. Please note, that thumbnails are loaded in the separate thread, so you'll not see them immediately after enabling this feature or changing a current folder. CBCGPShellList: new method SetAlwaysSortItems allows to sort list items in all modes (by default, the list is sorted in LVS_REPORT mode only). BCGCBITEMINFO has a new member dwAttributes: contains SFGAO_ flags of the shell item. CBCGPShellManager: added a new implementation of BrowseForFolder method. This method receives a pointer to BROWSEINFO structure and has the same behavior as SHBrowseForFolder Shell API method. CBCGPShellManager has the following new helper methods now: IsRecycleBin - tells whether a specified folder is Recycle Bin. IsCompressedFolder - tells whether a specified folder is an archive. IsLibrariesFolder - tells whether a specified folder is Libraries. GetItemThumbnail - returns thumbnail of the specified item. GetItemAttributes - gets specified item's SFGAO_ flags. PathFromShortcut - translates shortcut file to the path. GetWinExplorerOption - obtains Windows Explorer option. CBCGPShellBreadcrumb: a new virtual method IsExcludeFolder allows to filter-out tree nodes in the derived class. CBCGPShellBreadcrumb::SelectPath with an empty path navigates now to the root (Desktop) folder. Miscellaneous Added new shapes to BCGPChartMarkerOptions::MarkerShape: MS_TRIANGLE_LEFT, MS_TRIANGLE_DOWN, MS_TRIANGLE_RIGHT, MS_PENTAGON, MS_HEXAGON and MS_STAR (see screenshot). CBCGPGlobalUtils::EnableEditCtrlAutoComplete: a new, optional parameter lpszCurrentDirectory specifies files/folders autocomplete scope. Ribbon Designer: added invisible separators support. CBCGPSVGImage: new global flag 'm_bTraceProblemsDefault' allows to prevent tracing SVG issue. By default, all SVG issues are reported to the Debug Output window. There are two new optional parameters in CBCGPSVGImage::DoDraw method: bKeepAspectRatio and bUseViewBoxSize. CBCGPTabWnd: a new method HideDisabledScrollButtons allows to hide disabled horizontal scroll buttons. A new themed file dialog was added to all our Designers and Editors. Examples and Samples BCGPChartExample: added new marker shapes demonstration and themed file dialog in Export to image. BCGPControls: added CBCGPThemeSelectorComboBox demonstration, themed file dialog in the edit box and property grid controls. BCGPDiagramDemo: themed File Dialog demonstration. BCGPDigitalDashboard: themed File Dialog demonstration. BCGPExplorer: demonstrates Shell API new features. BCGPGridExample: demonstrates cell extended padding. BCGPMSOfficeDemo: demonstrates status bar simplified icons and themed File Dialogs. BCGPOrganizer: demonstrates improved CBCGPRibbonUndoButton control. BCGPVisualStudioGUIDemo: demonstrates themed File Dialogs. Wordpad: demonstrates themed File Dialogs. BreadcrumbDemo: demonstrates breadcrumb with custom-size icons. DiagramEditor: demonstrates themed File Dialogs. ProgressDialogDemo: added new progress dialog features demonstration. SkinnedDialog: added progress control smooth animation and lighting effect demonstrations. SVGViewDemo: added custom file dialog with SVG file preview (see screenshot). TasksPane: added Tabs navigation demonstration. ThemedFileDialog: new sample which demonstrates how to use a themed file dialog (see screenshot). WordPad: added CBCGPThemeSelectorComboBox demonstration. RibbonGadgets: added multi-line Ribbon Edit demonstration. Fixes CBCGPBreadcrumb: when user cancels in-place editing by Escape key, the focus is moved to the parent window now. CBCGPBreadcrumb: addressed issue with drop-down menu icons size. Now, the menu item icons are the same as breadcrumb icons (see screenshot). CBCGPExplorerToolBar: addressed issue with toolbar created on non-frame (e.g. dialog) window. CBCGPGanttChart: addressed issue with incorrect vertical scrolling in case of huge number of Gantt chart rows. CBCGPGridCtrl: addressed issue with incorrect (non-contrast) foreground color of internal header icons in some visual themes. CBCGPRibbonCategory: addressed issue with horizontal scrolling when category has a large number of groups. Ribbon QAT Customization dialog: controls that cannot be added to QAT (overridden method CanBeAddedToQAT returns FALSE) don't appear on the left-side controls list anymore. CBCGPRibbonLabel: addressed issue with foreground color when control is located on the Ribbon status bar (in some visual themes). CBCGPSVGImageList::LoadFromSVGSpriteBuffer: addressed issue with incorrect SVG icons sorting in some cases. CBCGPPopupMenu: addressed issue with vertical scroll page size. CBCGPRibbonUndoButton: addressed issue with controls state synchronization. CBCGPOutlookBarToolBar: addressed issue with scaling toolbar button images in the high DPI mode. CBCGPTreeCtrlEx: addressed issue with removing selection when user clicks on the empty (outside items) space. CBCGPListCtrl: addressed issue with header control subclassing on style changing. CBCGPShellTree: addressed issue with unnecessary node expanding when user presses numeric '+' key twice. CBCGPRibbonBackstagePagePrint: addressed issue with some printers that return incorrect options. CBCGPChartAxisPolarY: fixed axis drawing bug when axis has a minimal size or less. CBCGPScrollBar: addressed issue with incorrect thumb position when an owner list control has LVS_AUTOARRANGE style. CBCGPRibbonCustomize: the dialog is themed now if globalData.m_bUseVisualManagerInBuiltInDialogs is TRUE. CBCGPComboBox: addressed issue with erasing of the empty dropped-down list box when control has CBS_SIMPLE style. CBCGPEditCtrl: addressed some issues with underlined font (used for the edit hyperlinks) incorrect initialization. CBCGPGridCtrl: addressed issue with filter bar redrawing after visual theme changing. Toolbar and menu customization: disabled option to add icon to toolbar button/menu item with ID = -1. CBCGPRibbonEdit: addressed issue with incorrect foreground color when the Ribbon bar has a custom font.