BCGControlBar Professional Edition Version: 30.0. Released: 5/29/2019 Visual Studio 2019 support: The source files are fully compliant with Visual 2019 C++ compiler. All our examples and samples were thoroughly tested with VS 2019. Evaluation version contains DLLs and libraries required for VS 2019. Frame windows with a themed non-client area are created with WS_CAPTION style now: this change addresses many issues such as incorrect multi-monitor support, incomplete side-by-side behavior, frame resizing performance and others. If for some reason you need to keep an old behavior, simply set globalData.m_bIsFrameWsCaptionStyle to FALSE or override IsWsCaptionStyle method in your CMainFrame class. In addition, you may create a dialog box/property sheet with WS_CAPTION style: set globalData. m_bIsDlgWsCaptionStyle to TRUE or override IsWsCaptionStyle method in your dialog/property sheet class and return TRUE. Dialogs and Forms A new class CBCGPScrollDialog implements a dialog box with scrolling support (see screenshot). Please take a look at new sample ScrollDialogDemo to see this feature in action. CBCGPFormView: added automatic scrolling when a newly focused control exceeds form's bounds. CBCGPPropertySheet: added custom (owner-draw) notification badges support (see screenshot). Override new virtual method 'OnDrawPageNotificationBadge' to draw your custom badge (see PropSheetDemo sample). Docking Panes CBCGPDockingControlBar: implemented ability to specify pane's caption depending on the current state (see screenshot). For example, you can add a name of the currently selected object on the properties grid caption. Override a new method GetCaption in your CBCGPDockingControlBar-derived class. PropertyGridMDIDemo demonstrates this new feature. New global flag CBCGPOutlookButton::m_bDrawAmpersand specifies whether button's label should be drawn with underlined character or ampersand before this character. By default, the label is drawn with underlined character. CBCGPStatusBar: implemented status bar pane notification badge support (see screenshot). To specify a pane's badge, you have to call BCGPCMD_MGR.SetNumericNotificationBadge or BCGPCMD_MGR.SetCustomNotificationBadge method with id = status bar pane's ID. StatusBarDemo demonstrates this new feature. Chart Control Implemented drawing of partially visible data points for a fixed interval width. New methods EnableAllUnitsOnFixedInterval and IsAllUnitsOnFixedInterval were added to CBCGPChartAxis class. A new method ValueFromPoint was added to CBCGPChartTernaryAxis class. CBCGPChartSurfaceSeries::ColorMode enumerator has a new member: CM_SERIES: when this mode is specified, each series is drawn in one color, which is defined by the currently selected theme or by user. Visual Manager and Themes A control's description (usually located below control's label) has a special color now (see screenshot). A new method 'GetDescriptionTextColor' was added to CBCGPVisualManager class. CBCGPVisualManagerVS2019: changed visual theme colors to match VS 2019 release (Light blue theme) (see screenshot). Grid and Report Controls CBCGPGridItem: added hot-tracking support (see screenshot). Override a new 'IsHotTrackEnabled' method in your CBCGPGridItem-derived class and return TRUE to enable grid cell mouse tracking. Next, you've to override new virtual methods 'OnMouseMove' and 'OnMouseLeave' to implement a mouse cursor processing inside this grid cell. BCGPGridExample ("Cell Types" view, "Rating" cell) demonstrates this new feature. CBCGPGridCheckItem: added grid control modes ("Check box" or "Switch") (see screenshot). New methods SetMode and GetMode were added to this class. BCGPGridExample ("Cell Types" view) demonstrates this new feature. Implemented a special row marker for the Grid cell editing mode (see screenshot): when row is selected and one of the cells is being edited, a special marker (pencil) is displayed on the left side. New method CBCGPGridCtrl::SetRowHeaderEditImage allows to specify this symbol. In addition, you may draw your own marker by overriding new method CBCGPGridCtrl::OnDrawRowHeaderEditImage. Desktop Alert Window CBCGPPopupWindow: improved colors of BCGPPopupWindowTheme_Black theme (see screenshot). CBCGPPopupWindow: if window transition effect is CBCGPPopupMenu::SLIDE and desktop alert should appear on the left or right screen side, the sliding will be horizontal. Controls CBCGPDateTimeCtrl: added WM_GETTEXT message processing. A result of this message is formatted date and time value of this control. A new class CBCGPIPAddressCtrl implements themed IP Address control (see screenshot). You may see it in our BCGPControls example ("Miscellaneous" page). CBCGPListBox: new method MoveItem allows to change an existing list box item position (index). New class CBCGPDragListBox implements a list box that allows users to move items within the control (see screenshot). Generally, this control is very similar to MFC CDragListBox, but it has visual themes support and other CBCGPListBox features such as pinned items support, color bars and others. Please take a look at ListBoxDemo sample to see this new control in action. CBCGPSliderCtrl: introduced a new "progress" mode (see screenshot). In this mode, the channel area left of the slider's thumb is filled with some (default or user-defined) color. Call a new method CBCGPSliderCtrl::EnableProgressMode to enable or disable this mode. CBCGPSliderCtrl::IsProgressMode tells whether the progress mode is specified. Please take a look at ResizableForm sample ("Page 4" page) to see this new feature in action. CBCGPGroup: implemented group caption check box / radio button (see screenshot). When user "unchecks" the group, all controls located within the group bounds will be automatically disabled. SetCheckRadioStyle, GetCheckRadioStyle, SetCheck and GetCheck methods were added to CBCGPGroup class. New sample application "GroupBoxDemo" demonstrates how to use this new feature. Miscellaneous Implemented ability to enable "Press and Hold" gesture event for all library controls: by default, this event is disabled for the performance reasons, but you can enable it now by setting globalData. m_bTabletDisablePressAndHold to FALSE. CBCGPCalendar::IsDateMarked method is a virtual now: override it if you wish to mark specific calendar's date without calling MarkDates method. New virtual method CBCGPCalendar::OnClickTodayButton is called when user clicks "Today" button on the calendar. CBCGPEditCtrl: added visual theme-dependable bookmarks (see screenshot). If for some reason you wish to keep old (gradient-style) bookmarks, please call a new CBCGPEditCtrl's method EnableVisualManagerMarkers with bEnable = FALSE. CBCGPPropList: implemented items button custom color (see screenshot). New methods SetItemButtonColor and GetItemButtonColor were added. CBCGPWinApp class overrides DoMessageBox method and displays a themed message box (BCGPMessageBox) instead of the standard message box (see screenshot). If you wish to keep the standard message box, please set m_bThemedMessageBox = FALSE in your application class constructor. CBCGPAppOptions structure has a new member m_bMDITabsDocumentMenu: specifies whether MDI tabs have a documents button located right of tabs. Added a new registered message BCGM_GETCOLORTOOLTIP. The message is sent to the main application frame when a color box's tooltip is being formatted. Examples and Samples BCGPControls: added IP Address control and Property Grid button custom color demonstrations. BCGPVisualStudioGUIDemo: demonstrates new features of the editor markers. BCGPGridExample: added demonstration how to add switch control and custom rating control to the grid. ListBoxDemo: demonstrates a new CBCGPDragListBox class. PropertyGridMDIDemo: added demonstration how to customize a docking pane caption. PropSheetDemo: demonstrates owner-draw notification badges. ResizableForm: added slider controls in a progress mode demonstration. New sample application ScrollDialogDemo (see screenshot) demonstrates how to use a new class CBCGPScrollDialog. StatusBarDemo: demonstrates status bar pane notification badge. New sample application GroupBoxDemo demonstrates how to add check box and radio button to the group box control. Fixes CBCGPGraphicsManagerD2D: addressed issue with incorrectly created stroke style in some cases. CBCGPKeyMapDlg: addressed issue with incorrectly filled key list if main application frame has an advanced frame caption pane. CBCGPListBox: addressed issue with incorrectly painted list box item when control has "Right Align" style. CBCGPPopupMenu: addressed issue with a first menu item repainting after the scrolling performed by the mouse wheel. CBCGPPropertySheet: addressed issue with repainting of the separator located below the wizard buttons after property sheet was resized (Wizard mode only). CBCGPRibbonBar: addressed issue with QAT icons color when Ribbon bar doesn't replace the frame caption (in some visual themes such as Office 2016 colorful or dark gray). CBCGPRibbonCategory::GetImageSize returns now a default image size when a Ribbon category (tab) doesn't have a corresponding image list. CBCGPRibbonComboBox: addressed issue with foreground color of control located on the Ribbon tabs row (in some visual themes when tabs area has a dark background). CBCGPStatic: addressed issue with calling SetPicture multiple times. In this case, a previously loaded image is properly cleared. CBCGPSwitchCtrl correctly processes BCGM_ONSETCONTROLVMMODE registered message now. CBCGPVisualManager: addressed switch control drawing issue in some visual themes. Chart: addressed issue with incorrect surface series rendering in case of CBCGPChartSurfaceSeries::CM_SINGLE color mode when a number of color levels is 1. CBCGPPlannerViewSchedule: addressed issue with incorrect size for all-day appointments that have duration of more than one day. CBCGPPropertyPage: addressed issue with incorrect header width in some cases. CBCGPScrollBar: addressed issue with internal control rendering in some cases. CBCGPTooltipManager: optimized tooltips memory management. Visual container and control: fixed incorrect position and layout of the visual container items after printing or exporting. CBCGPGridCtrl: addressed some issues with a grid horizontal scrolling.