BCGControlBar Professional Edition Version: 29.0. Released: 10/29/2018 Implemented Notification Badges support (see screenshot). A notification badge is a small-size element placed near control and it indicates some event associated with control. For example, you may add a numeric badge with a number of new mails to Ribbon/toolbar "Mail" button or Security Alert icon to the link control. Notification badges were added to the following controls: Toolbar/Ribbon bar/Menu. Ribbon Backstage view. Push Button. Shortcuts ("Outlook") bar. Grid. Tasks pane. Tree control. List box. Please take a look at new sample NotificationBadgesDemo to see this feature in action. Introduced Advanced Frame Caption Bar (see screenshot) with the following functionalities: Ability to add custom buttons/controls. Since Frame Caption Bar is derived from the Ribbon Bar, you've to add the ribbon controls only. MDI tabs Ability to specify an owner-draw system icon with a custom size and custom system menu. New methods were added to the frame classes (CBCGPMDIFrameWnd and CBCGPFrameWnd): EnableFrameCaptionBar: enable/disable the caption bar GetFrameCaptionBar: obtain a pointer to the caption bar A new option "MDI Tabs on Caption" has been added to the Application Wizards (see screenshot). Please take a look at BCGPVisualStudioGUIDemo example and new demonstration programs BCGPEdgeDemo and FrameCaptionDemo to see this new feature in action. In addition, we've added "MDI Tabs on Caption" mode to MDITabsDemo sample. Ribbon Bar CBCGPRibbonBackstagePagePrint: added a new virtual method OnGetPrintView. Override this method to specify the view for print preview or printing (by default, the active view is being used). CBCGPRibbonPaletteButton::SelectItem has new optional parameters: bEnsureVisible - make a selected item visible and bNotifyOther - synchronize current selection with other controls with the same ID. CBCGPRibbonPaletteButton: a new method 'EnsureVisible' has been added to this class. A new class CBCGPRibbonFrameCaptionBar implements advanced application frame caption bar. A new class CBCGPRibbonCaptionMDITabs implements MDI Tabs located on advanced application frame caption bar (CBCGPRibbonFrameCaptionBar). Dialogs and Forms CBCGPStaticLayout: added support for controls group. New method AddGroupAnchor allows to apply the same layout for all controls located in the specific group. CBCGPPropertySheet: added numeric notification badges support (see screenshot). New methods were added to CBCGPPropertyPage class: SetNumericNotificationBadge. ClearNumericNotificationBadge. Please take a look at PropSheetDemo sample (List on Left) to see this new feature in action. CBCGPMessageBox has the following new features and improvements (see screenshot): You can create any CWnd-derived custom control in place of the default text box: override GetTextBoxSize method to specify the control size and CreateTextBox method to create the control. Custom images support: override GetIconSize method to specify the image size and OnDrawIcon to draw a custom image. Please take a look at MessageBoxDemo sample to see these features in action. New class CBCGPMessageLightBox implements a message box in light-box style (see screenshot). Please take a look at LightBoxDemo sample to see this new feature in action. MDI Windows and Tabs A new virtual method CBCGPMDIFrameWnd::OnGetMDITabCustomToolTip allows to specify MDI tab custom tooltip. Improved MDI Tab animation ("busy" indicator) support: New method CBCGPMDIFrameWnd::SetMDITabStateAnimationImages specifies MDI tab state animation frames list. New methods CBCGPMDIChildWnd::StartMDITabStateAnimation and CBCGPMDIChildWnd::StopMDITabStateAnimation allows to start/stop MDI tab state animation. CBCGPMDIChildWnd::IsMDITabStateAnimation tells whether MDI tabs animation was started. A new virtual method CBCGPMDIFrameWnd:: OnClickMDINewTab is called by the framework when user clicks a "New" button located on the MDI tabs. By default, a new document is created in the currently active MDI frame. A new document is automatically created now in active tear-off frame (if any). If for some reason you want to disable this feature and always create a new document in the main application frame (as it was in the previous product versions), please set m_bCreateNewFrameInActiveTearOffFrame = FALSE in CBCGPMDIChildWnd-derived class (usually CChildFrame) constructor. Chart Control CBCGPChartView::EnableAdvancedLegend has a new, optional parameter 'bPrint'. Set it to TRUE if you wish to print an advanced chart legend object. CBCGPChartSurfaceSeries has a new method SetHitTestTolerance. If you call this method with dblHitTolerance different from 0 (e.g. 5), the hit testing returns vertices instead of planes. Gauge Controls Circular Progress Indicator: added a new style BCGPCircularProgressIndicator_Dots (see screenshot). This style can be specified in the infinite mode only. CBCGPNumericIndicatorImpl: added numeric format support (see screenshot): BCGP_NUMERIC_INDICATOR_FORMAT_STANDARD - standard format (default). BCGP_NUMERIC_INDICATOR_FORMAT_SCIENTIFIC - scientific format. BCGP_NUMERIC_INDICATOR_FORMAT_HEX - HEX format (32-bits integers only). Call new method CBCGPNumericIndicatorImpl::SetFormat to specify the numeric format. BCGPGaugesDemo example Illustrates this new feature. Visual container and Visual Designer New method CBCGPGlobalUtils::ScaleByDPI(CBCGPVisualContainer& container) scales all container elements according to current DPI. CBCGPBaseVisualObject: new virtual method GetHitTestTolerance allows to specify a tolerance of the hit testing. Visual Manager and Themes CBCGPTasksPane: improved appearance in Windows Native theme under Windows 8/10 (see screenshot). VS 2012/2013/2017 and Office 2013/2016 Visual Managers: added support for the light custom and immersive (specified by Windows 10 settings) accent colors (see screenshot). Please take a look at BCGPMSOfficeDemo and BCGPVisualStudioGUIDemo examples to see this feature in action. Added new virtual methods to CBCGPVisualManager class: GetControlFillColor: returns a default background color of a control. GetControlTextColor: returns a default text color of a control. OnDrawViewBorder: call this method from WM_NCPAINT message handler in your CView-derived class to make the view borders matched to the active theme. A new static method CBCGPVisualManager::SetNumericNotificationBadgeDefaultColor allows to specify a notification badge default background color. Grid and Report Controls Implemented notification badges (see screenshot). Added new methods CBCGPGridItem::SetNotificationBadge, CBCGPGridRow::RemoveAllNotificationBadges, CBCGPGridItem::OnDrawNotificationBadge and CBCGPGridCtrl::GetNotificationBadgePadding. Please take a look at BCGPGridExample application ("Cell Types" view) to see this new feature in action. Filter bar appearance customization. New optional parameter 'color' has been added to CBCGPGridCtrl::EnableFilterBar method. CBCGPGridCtrl::GetColumnCount has a new optional parameter bCalcVisibleOnly. Set this parameter to TRUE if you need to calculate the visible columns number. CBCGPGridCtrl: improved appearance in some Visual Managers. Added loading grid header/items images directly from the resources: SetHeaderImageList and SetImageList with 'UINT nResID' parameter methods were added to CBCGPGridCtrl class. New virtual method CBCGPGridCtrl ::OnDrawExpandBox allows to customize an expand/collapse box appearance. Controls CBCGPButton: added numeric notification badges support (see screenshot). New methods were added to CBCGPButton class: SetNumericNotificationBadge. ClearNumericNotificationBadge. GetNumericNotificationBadge. GetNumericNotificationBadgeColor. OnDrawNotificationBadge. CBCGPColorButton: a new method SetDrawColorInDisabledControl allows to display a color box on the disabled control. By default, the color is not displayed when control is not enabled. CBCGPColorComboBox: added ability to specify the selected item prior to the control creation. CBCGPHotSpotImageCtrl has the following new features (see screenshot): Added SVG images support: the control image source can be SVG now. In addition, you may specify hot spot areas by SVG element id: a new method AddHotSpot(UINT nID, const CString& strSVGElementID, LPCTSTR lpszToolTip, LPCTSTR lpszToolTipDescription) was added. Implemented keyboard navigation and gesture events support. Added MSAA and Coded UI Tests support. Please take a look at HotSpotDemo sample to see these new features in action. CBCGPListCtrl: implemented drawing of selected item with a visual theme (see screenshot). If for some reason you wish to keep old appearance (default blue background), please call a new method CBCGPListCtrl::EnableThemedSelection with bEnable = FALSE. CBCGPListBox: added numeric notification badges support (see screenshot). New methods were added to CBCGPListBox class: SetItemNotificationBadge RemoveItemNotificationBadge GetItemNotificationBadgeNumber GetItemNotificationBadgeColor Please take a look at ListBoxDemo sample to see this new feature in action. CBCGPListBox: caption item can be drawn using the same font as other ("non-caption") items. To enable this feature, call a new method SetCaptionItemsLargeFont with parameter bSet = FALSE. New class CBCGPTabCtrl implements a standard Windows tab control (CTabCtrl) with visual themes support (see screenshot). CBCGPTreeCtrl: added numeric notification badges support (see screenshot). New methods were added: SetItemNotificationBadge RemoveItemNotificationBadge RemoveAllNotificationBadges CBCGPTreeCtrl: implemented support for TVS_TRACKSELECT tree control style. CBCGPShellList: virtual method OnFormatFileSize is obsolete and it should be replaced with OnFormatStrFileSize (a new method has ULONGLONG parameter instead of long). Graphics Manager New compilation flag BCGP_EXCLUDE_TEXTURED_BRUSHES allows to reduce CBCGPBrush size. Uncomment this flag in BCGCBProConfig.h if you don't use textured brushes. CBCGPGraphicsManagerGdiPlus: added a new global flag m_bLoadImageFromStream. By default, GDI+ locks files when loading images from disk storage. To prevent this, you need to set this flag to TRUE and loaded memory streams will be used instead. Edit control Implemented error indication support (see screenshot). A new simple and flexible mechanism allows to specify incorrect words or spelling errors and display them with a red curved line under the text and display list of suggested corrections in the word's context menu. EnableErrorIndication: enable/disable error indication. The following new methods were added to CBCGPEditCtrl class: IsErrorIndicationEnabled: tells whether error indication is enabled. IsCorrectWord: override this method to specify if specific word is incorrect. By default, all words are treated as correct. GetWordCorrections: override this method to specify a list of suggested corrections and list of custom actions related to the incorrect word. OnWordCorrectionMenuCustomAction: override this method to perform a custom action for the incorrect word (e.g., add this word to dictionary). GetIncorrectWordToolTip: override this method to specify a custom tooltip displayed near incorrect word (e.g., a reason why this word is treated as incorrect or recommended action). Please take a look at BCGPVisualStudioGUIDemo example to see this new feature in action. Improved side bar appearance under dark and high-contrast visual themes. Miscellaneous The library source code is fully-compatible now with Intel Compiler 18.0/19.0. We have fully tested our product with Intel Parallel Studio XE 2018/2019. D2D initialization: added D2D validation code. If D2D rendering with hardware acceleration is failed, we're trying to use a software rendering. If this type of the rendering is ok, all D2D render targets will be automatically created with D2D1_RENDER_TARGET_TYPE_SOFTWARE type. If the software rendering is failed too, GDI+ graphics manager will be used by default. This addition solves issues with outdated D2D/DirectX drivers on the customer machines. CBCGPFontSelector has new optional parameters in the class constructor: clrText: specifies a text color. bTransparentBkMode: specifies whether background should be transparent. CBCGPExplorerToolBar has the following new and improved features (see screenshot): Added optional Refresh (Reload) button with ability to cancel loading process. EnableNavigationButtons has 2 new optional parameters: nRefreshID and nStopID. If a history menu button is not specified, user can right-click on Back/Forward buttons and menu with specific history items will be displayed. A history type (BCGPEXPLORERTOOLBARHISTORY_All, BCGPEXPLORERTOOLBARHISTORY_Prev or BCGPEXPLORERTOOLBARHISTORY_Next) can be obtained by calling a new method GetHistoryMenuType. Improved appearance of the navigation buttons: the icons are loaded now from the new SVG images and nicely scaled in all DPI modes. Please take a look at ExplorerBarDemo sample to see these new features in action. CBCGPScrollView: added support for the gesture pan event. The window can be easily scrolled now on the touch-enabled devices. CBCGPSVGImage: implemented elements filtering method SetElementsFilter. The filter contains a list of SVG element IDs and allows to perform any image editing actions such as color changing only for the elements in the list. Examples and Samples BCGPEdgeDemo: new example that demonstrates how to create MS Edge-style application (see screenshot). BCGPControls: added numric badge on the push button demonstration. BCGPGaugesDemo: added "Dots" circular progress and numeric indicator format demonstrattions. BCGPGridExample: added grid cell numeric badge deminstrattion. BCGPMSOfficeDemo: added demonstration how to add light custom accent colors. BCGPOutlookDemo: added numeric badges located on Shortcuts bar and Folders tree. BCGPVisualStudioGUIDemo: added custom caption bar and error indication in the edit control (see screenshot). ExplorerBarDemo: added demonstration of new history modes and refresh/stop buton. HotSpotDemo: demonstrates how to create SVG-based control. LightBoxDemo: added BCGPLightMesageBox demonstration. ListBoxDemo: added numeric badges demonstration. MDIEditorDemo: added error indication demonstration. MDITabsDemo: added "MDI Tabs on Caption" mode demonstration. MessageBoxDemo: added custom (window control-based) text box and custom-size icon demonstration. PropSheetDemo: added page numeric badge. ResizableForm: demonstrates how to create a controls group layout. TabControl: demonstrates new CBCGPTabCtrl class. FrameCaptionDemo: a new sample that demonstrates how to create an advanced frame caption bar with custom controls, system icon and MDI tabs. NotificationBadgesDemo: a new sample that demonstrates how to add notification badges to different controls. TreeCtrlDemo: demonstrates tree item highlighting mode and item numeric badges. Fixes Addressed issue with text color on DWM areas in case of custom Windows accent color. CBCGPBaseTabWnd: addressed issue with moving tabs with a various label length. CBCGPVisualContainer: addressed issue with scrolling of non-watermark textured background. CBCGPSliderCtrl: addressed issue with drawing zoom buttons in disabled control. CBCGPTasksPane: addressed issue with drawing icons on disabled tasks. CBCGPTasksPane: addressed issue with repainting highlighted task when the mouse cursor leaves the tasks pane. CBCGPBaseVisualCtrl: addressed issue with drawing control's non-client area using GDI+ graphics manager. Fixed bug with a window restoring from minimized state using the taskbar icon. Addresed issue with reposition the maximized frame to another monitor using system keys. CBCGPGridCtrl: addressed issue with horizontal alignment in CBCGPGridCheckItem with a text label. CBCGPGridCtrl: addressed issue with horizontal scrolling to a column by EnsureVisible and EnsureVisibleColumn methods for the wide columns. Diagram: addressed issue with drawing of connection ports in CBCGPDiagramTableShape during a scaling process. Diagram: fixed bug with a mouse cursor on the diagram's connector. Diagram: addressed some issues with scaling, drawing, dragging of the diagram connectors. Diagram: connectors are correctly handling BCGP_EDIT_NOSIZE and BCGP_EDIT_NOMOVE editing flags now.