BCGControlBar Professional Edition Version: 33.6. Released: 9/12/2023 Ribbon Bar CBCGPRibbonButton::SetMenu: added a new optional parameter 'bDrawMenuArrow'. If this parameter is FALSE, there is no space allocated for the menu arrow and this arrow is not drawn. CBCGPRibbonBar::FindByID has a new, optional parameter 'bExcludePrintPreview'. If this parameter is TRUE, controls created on the built-in "Print Preview" tab are not returned by this method. Implemented ability to add controls on the left of the Ribbon tabs (see screenshot). CBCGPRibbonBar::AddToTabs method has a new, optional parameter 'bAddToLeft' (FALSE by default). If this parameter is TRUE, control will be added to the left side. Please take a look at RibbonGadgets example to see this new feature in action. Implemented ability to hide a Ribbon single tab (see screenshot). Call new method CBCGPRibbonBar::HideSingleTab to enable or disable this feature. Our new example BCGPPaint demonstrates this functionality. Toolbars and Menus CBCGPUserTool: implemented tool icon DPI awareness. Added a new global member (public) CBCGPUserTool::m_bDPIAwareIcon (TRUE by default). CBCGPToolbarDateTimeCtrl: added touch-friendly drop-down date/time picker support (see screenshot). Use a new flag BCGP_DTS_DATETIME_TOUCH to specify this style. Please take a look at ToolbarDateTimePicker sample to see this new feature in action. Diagram Control A process of adding new shapes to the diagram has been simplified: you do not have to specify the shape size anymore - just use a new constructor that receives a shape point instead of rectangle (CBCGPDiagramShape, CBCGPDiagramImageObject and CBCGPDiagramTableShape classes). The diagram shape size will be calculated according to shape content and internal padding (specified by new virtual method CBCGPDiagramShape::GetExtraPadding). Please take a look at BCGPDiagramDemo example to see this new feature in action. CBCGPDiagramVisualContainer: A new method SetDefaultShapePadding specifies a default padding of the diagram shapes added with automatic size calculation. A new method SetCenterPointInAddItems specifies whether a newly added shape will be centered around the shape point. Improved DPI scaling support: text and shapes are properly scaled now according to the current DPI scaling value. Grid and Report Controls Item state icons are DPI-aware now. CBCGPGridItem: implemented multiple buttons support (see screenshot). To add buttons to your grid cell, you have to override a new virtual method CBCGPGridItem::GetCommandIcons and return the icons list. Override new method CBCGPGridItem::OnClickCommandIcon or CBCGPGridICtrl::OnClickItemCommandIcon to implement a button click action. Also, you can add a new registered message BCGM_GRID_ITEM_COMMAND_CLICK handler. Please take a look at BCGPGridExample application ("Cell Types" view) to see how to use this new feature. Improved keyboard navigation support - added some Excel-like shortcuts: Ctrl+Left: move to the 1st cell in row. Ctrl+Right: move to the last cell in row. Ctrl+Shift+Left: select all cells on the left. Ctrl+Shift+Right: select all cells on the right. Ctrl+Home: move to the 1st cell in grid. Ctrl+End: move to the last cell in grid. Ctrl+Shift+Home: select cells from current to top-left. Ctrl+Shift+End: select cells from current to bottom-right. A new method EnableColumnWidthAutoSizeOnHeaderDblClick specifies whether double-clicking column header divider will resize the column to fit the column content. By default, this option is off. Added new Grid navigation helpers: SelectFirstLastItemInRow: moves selection to the first/last cell in the current row. SelectFirstLastItemInColumn: moves selection to the top/bottom cell in the current column. Controls CBCGPListCtrl: added a new virtual method 'OnBeforeDrawItem'. Called by the framework before the list control item drawing. CBCGPStatic: added a new member 'm_clrBkgnd' (see screenshot). This attribute specifies background color of the control. See BCGPControls example application. CBCGPSplitterWnd: added DPI scaling support. When DPI of the splitter window is being changed, panes are repositioned according to current DPI value. Call new method SetDPIAware to enable/disable DPI scaling support and IsDPIAware to check whether this support is enabled. By default, DPI scaling is on. CBCGPWinUITiles: Improved keyboard navigation support. When control contains the tiles only (no groups, no captions), TAB key navigates through the tiles now. Drawing of the tile header and text has been optimized. CBCGPHotSpotImageCtrl additions: Implemented transparent background: if m_clrBack member (specified by SetBackgroundColor method) is CLR_NONE, the picture will be drawn with transparent background. Added new method SetBuffer: call this method to load picture from the memory buffer. CBCGPTagCloud: added a new method 'FindTag'. Call this method to find tag by name. CBCGPTabWnd: added numeric badges support (see screenshot). Call new method SetNumericNotificationBadge to set a tab numeric badge and ClearNumericNotificationBadge to remove a badge from the tab. TabControl sample demonstrates this new feature. Shell Management CBCGPShellList and CBCGPFileDialogEx (themed file dialog): significantly improved performance of displaying folders with a large number of files. CBCGPShellList::RemoveItem: added a new optional parameter 'bConfirmDelete'. If this parameter is FALSE, the confirmation dialog will never be displayed, TRUE - use system default settings (default value). Graphics Manager CBCGPImage: can be created from the buffer now. A new constructor that receives 'LPBYTE lpBuffer' parameter has been added to CBCGPImage class. Now, you can easily load image stored in a database as a 'BLOB' record type. Please take a look at GraphicsManagerDemo sample ("Images" view) to see this new feature in action. CBCGPTextFormat: implemented colored font support (see screenshot). EnableColorFont and IsColorFontEnabled methods were added to this class. Please note that this feature is available in CBCGPGraphicsManagerD2D (Direct2D) only. You can see this new feature in action in our GraphicsManagerDemo sample ("Texts" view). MSAA and CodedUI Tests CBCGPDurationCtrl: improved returned values for the accessibility value and role. CBCGPWinUITiles: improved accessibility support for the selected and hidden tiles. Edit control Changed BCGM_ON_MODIFIEDCHANGE registered message parameters: LPARAM receives a pointer to the current window. Changed BCGM_ON_EDITCHANGE registered message parameters: WPARAM received control id of the current window and LPARAM receives a pointer to the current window. SetSymImgList method can be called now before the window creation. Miscellaneous BCGPGLOBAL_DATA: added a new public member m_bDPICursorScaling. This member specifies whether internal library cursors are DPI-aware. Starting Windows 10, the cursors are automatically scaled by OS, so this flag is FALSE for Windows 10 or 11 and TRUE for the earlier OS versions. Custom icons list (used in toolbar/ribbon bar customization dialogs) is DPI-aware now. CBCGPVisualContainer: added DPI support for the container grid. CBCGPVisualContainer::SetGridSize has a new, optional parameter 'BOOL bDPIAware'. CBCGPGlobalUtils::ScaleByDPI(CRect): added new optional parameter 'bKeepCenter'. Specifies whether rectangle should be scaled around the center point. CBCGPSVGImage::DoDraw: added a new, optional parameter 'bSVGStretch'. By default, this parameter is TRUE. Set it to FALSE to prevent scaling during conversion from SVG to BMP. CBCGPCaptionBar: implemented pane icons DPI-awareness support. CBCGPChartVisualObject::ShowDataLabels has a new, optional parameter 'dblDistanceFromMarker'. If this parameter is not (-1), the value will be passed to SetDataLabelDistanceFromMarker of all series of the chart. Examples and Samples BCGPGridExample: added demonstration of the grid cell with multiple buttons. In the "Formatted Grid" view you can see how to add Bold and Italic tags to the exported HTML. BCGPControls: added feature group tiles and static control with custom background demonstration. BCGPDiagramDemo: demonstrates how to add shapes with default (automatically calculated) sizes. GraphicsManagerDemo: added colored font demonstration in the "Texts" view. A new view "Images" (see screenshot) demonstrates how to initialize CBCGPImage objects in the various ways. MDITabsDemo: added a new property "Activate new MDI child". When this option is FALSE, a newly created MDI child window will not be active (similar to opening a new page by clicking link with mouse middle button in MS Edge). RibbonGadgets: demonstrates how to add controls on the left of the Ribbon tabs. TabControl: added tab numeric notification badge demonstration. ToolbarDateTimePicker: added demonstration of touch-friendly date picker. Improved per-monitor DPI support in various examples and samples. Added a new example BCGPPaint (see screenshot). This example demonstrates how to create Paint for Windows 11-style interface ("light" ribbon without tabs, QAT and menu bar integrated with the ribbon). Fixes CBCGPAutoHideToolBar: addressed issue with incorrect auto-hide toolbar redrawing after DPI change. Addressed some issues with a building library with the latest C++ language standard. Ribbon bar: controls from built-in "Print" tab cannot be added to QAT and context menus anymore. Ribbon Bar: if a custom control cannot be added to QAT (CanBeAddedToQAT method returns FALSE), this control does not appear on the QAT customization dialog anymore. CBCGPToolbarCustomize: method 'CheckToolsValidity' is called now when user clicks the caption "Close" button. CBCGPEdit: a 'Clear' icon is loaded now only if control has a "Search" mode. CBCGPKeyMapDlg: the current view icon is correctly scaled now upon DPI changing. CBCGPPropertySheet: addressed issue with incorrect header area height after DPI changing. CBCGPStatic: addressed some issues with DPI scaling of the control's picture. CBCGPSVGImage: clipPath transformations are correctly processed now. CBCGPToolTipCtrl: addressed issue with incorrect icon size when tooltip and parent frame are displayed on different monitors with the different DPI values. CBCGPExplorerToolBar: addressed issue with incorrect DWM support when explorer bar is located under the Ribbon bar or frame caption bar. CBCGPComboBox: addressed some minor issues in the auto-complete mode. CBCGPDateTimeCtrl: addressed issue with unnecessary mouse wheel processing in the touch mode. CBCGPRadialMenu: addressed issue with incorrect icon size in the multi-monitor environment. CBCGPPropList: addressed some issues caused by unexpected removal of properties inside BCGM_PROPERTY_CHANGED message handler. CBCGPOutlookWnd: disabled button label editing when the window is collapsed (minimized). CBCGPMDIFrameWnd: when the Ribbon backstage view in the main frame is active and detached (torn-off) frame is activated by Alt-Tab, the backstage view is closed now. CBCGPMDIChildWnd: addressed issue with incorrect thumbnail bitmap size under Windows 10/11. CBCGPMainClientAreaWnd: improved behavior of dragging MDI child window inside the parent frame. CBCGPRibbonSlider: addressed some issues with drawing control on the Ribbon customization dialogs. CBCGPRibbonButton: if the large button does not have a text label and button has a drop-down menu, the menu arrow is vertically centered now. CBCGPRibbonBar: addressed some issues with displaying SVG-based background image. CBCGPGridCtrl: addressed issue with incorrect right-most column width in the column auto-resize mode in some cases.