BCGControlBar Professional Edition Version: 31.3. Released: 6/15/2021 A new class CBCGPPropertyManager (see screenshot) implements an easy and efficient way to create your application properties (options) from XML file, bind properties to CBCGPPropList control, save property values to the registry and load them. The following new article describes how to create XML properties file and use it in your application: How to Create Property Grid XML.. Please take a look at MDITabsDemo sample to see how to use this new class. In addition, BCGPControls example demonstrates how to export properties from CBCGPPropList controls to external XML file and imports properties to control using custom CBCGPPropertyManager. BCGControlBar Pro Application Wizard (for VC++ 6.0 and VS 2017/2019) has a new option "User Property Manager": if this option is checked, the application will be created with built-in property manager. Chart Control BCGPChartHitInfo::HitInfoTest has a new flag "HIT_DATA_AREA" (series area: line or closed area) (except splines). CBCGPChartSeries class has a new method HitTest(const CBCGPPoint& pt, BCGPChartHitInfo* pHitInfo, UINT uiHitInfoFlags) - hit-test for data labels, data points and data area. uiHitInfoFlags can be combination of HIT_DATA_POINT, HIT_DATA_LABEL and HIT_DATA_AREA. Improved data points hit-testing for 3D charts and bubble charts. Property Grid Control CBCGPProp: a new method AddOptions allows to add a list of options at once. CBCGPProp: the following new virtual methods can be implemented in the custom properties for the property importing from XML and exporting to XML: ExportToXML GetXMLValue SaveXMLAttributes SaveToRegistry LoadFromRegistry CBCGPProp::SetValue allows to change the variant type now (e.g., you may pass "123" string and, if item is numeric, the value will be changed to 123). CBCGPPropList: a new method ExportToXMLFile allows to export properties to external XML file. Shell Management CBCGPShellList: a new virtual method OnAfterRenameItem is called after the item renaming. A new class CBCGPFolderPickerDialog implements a themed folder picker dialog (see screenshot). This dialog has a same functionality as standard CFolderPickerDialog, but it supports the visual themes and custom (recent) folders. Please take a look at ThemedFileDialog sample to see this dialog in action. CBCGPShellManager: parameter 'BOOL bThemedBrowseFolderDlg' of BrowseForFolder method was replaced with 'UINT nBrowseFolderDlgStyle' (BCGP_FOLDER_PICKER_STANDARD, BCGP_FOLDER_PICKER_THEMED or BCGP_FOLDER_PICKER_FILEDLG). MSAA and CodedUI Tests CBCGPToolbarComboBoxButton: improved control MSAA support (added STATE_SYSTEM_EXPANDED/ STATE_SYSTEM_COLLAPSED, STATE_SYSTEM_UNAVAILABLE and STATE_SYSTEM_INVISIBLE states). CBCGPGanttChart: added MSAA support for all Gantt chart objects such as header, grid and items. Edit control Added "Zoom" gesture event support. If edit control scaling (zooming) is available, a customer will be able to zoom-in or zoom-out edit control content on the touch screen using zoom gesture. Implemented Edit control scaling (see screenshot). The following new methods and notifications were added to CBCGPEditCtrl class: EnableZoom: enables or disables editor zoom IsZoomEnabled: tells whether zoom is enabled SetScale: set the current editor scale GetScale: get the editor scale SetScalingRange: specify the editor scaling range GetMinScale and GetMaxScale: obtain the editor scaling range BCGM_ON_EDITSCALECHANGED: notify owner about editor scale changing CBCGPEditView: a new virtual method OnScaleChanged is called when the editor scale was changed. Please take a look at BCGPVisualStudioGUIDemo example to see this new feature in action. Improved Edit control "modified" flag implementation: BCGM_ON_MODIFIEDCHANGE: this new registered message notifies owner about "modified" flag changing. CBCGPEditCtrl::SetModified method is a virtual now. CBCGPEditView correctly specifies a document's "modified" flag (e.g., if user undoes all editor actions, the document will be unmodified again). Miscellaneous CBCGPCircularGaugeImpl: the first (single) pointer can be deleted now (by calling RemovePointer method) and circular gauge can be created as pointer-less. CBCGPGridItem::SetValue allows now to change the variant type (e.g., you may pass "123" string and, if item is numeric, the value will be changed to 123). CBCGPPopupWindow: new static methods HasActivePopup and CloseActivePopup allow to check whether a popup is active and close the active popup window. CBCGPSVGImageList: added new method GetLastXMLError. Call this method to obtain a recent XML parsing error if SVG contains an incorrect XML and image cannot be loaded. If a global flag CBCGPSVGImage::m_bTraceProblemsDefault is TRUE, the error will be automatically printed in the Debug Output window. CBCGPTabWnd::SetupTabCloseButton method is a virtual now. CBCGPEdit: parameter BOOL bThemedBrowseFolderDlg of EnableFolderBrowseButton method was replaced with UINT nThemedBrowseFolderDlg (0 - standard Shell dialog, 1 - themed dialog, 2 - folder picker dialog). Toolbars/menus customization: added ability to modify user images in SVG format. CBCGPToolbarOptions structure has a new flag (FALSE by default) m_bAllowModifySVGImages. If you set this flag to TRUE, New and Edit buttons in the Button Appearance dialog will be enabled and customer may add a new SVG icon and replace an existing one. By default, when user clicks New or Edit button, the file dialog where SVG icon should be chosen will appear, but developer may customize this behavior by handling a new registered message BCGM_ONUPDATESVGICON: inside the message handler you may launch your SVG icon editor and return SVG code or path to SVG file. CBCGPDiagramConnector: added a new method Disconnect. Call this method to disconnect a connector from a diagram object. It removes all links between connector and diagram object. The placements of a connector and a diagram object remain unchanged. Examples and Samples BCGPChartExample: "Interactive Chart" view demonstrates improved hit testing. BCGPControls: added demonstration of how to switch between 2 and 4 digits in year field typing ("Date/Time control" view), import/export XML properties and new Folder Picker dialog. BCGPGaugesDemo: added demonstration of how to remove all pointers from the circular gauge ("Circular gauge elements" view). BCGPVisualStudioGUIDemo: added edit control scaling demonstration. MDITabsDemo: added demonstration of how to use a new class CBCGPPropertyManager. ThemedFileDialog: added CBCGPFolderPickerDialog demonstration. Fixes CBCGPGaugeImpl: addressed some issues with moving pointer (needle) in the interactive mode when gauge has multiple number of pointers. CBCGPComboBox: addressed a vertical scroll bar drawing issue when control has CBS_SIMPLE style. CBCGPDateTimeCtrl: a drop-down calendar is not opened again when user clicks drop-down button and calendar is already opened. CBCGPKeyHelper: addressed issue with conversion key to uppercase in some locales. CBCGPGlobalUtils: ProcessCtrlEditAccelerators correctly processes now keyboard accelerators with the same character as in standard keyboard shortcut (such as Ctrl+A). CBCGPTabWnd: addressed issue with incorrect width of the underline bar when tab labels in the uppercase. CBCGPVisualContainer: addressed issue with incorrect container's objects position during moving when container has scrollbars. CBCGPRibbonCategory: addressed issue with unnecessary scroll buttons appearing when the Ribbon has enough space to display all panels (groups) without scrolling. CBCGPVisualManager2016 (colorful theme): addressed issue with incorrect foreground color of disabled backstage menu item if developer specified a very light accent color. CBCGPPropList: addressed issue with incorrect commands area height after adding/removing the commands. CBCGPDiagramTextDataObject: addressed issue with editing empty label. CBCGPGanttChart: addressed some issues with drawing Gantt chart header.