BCGSoft > BCGSuite for MFC versions

BCGSuite for MFC versions

Version 20.0. Released 03/11/2013
New features
  1. Touch/Gesture support. We decided to implement extended gestures support for most of our controls. In addition, we've implemented easy to use, compact and intuitive Windows Gesture API wrapper, so you can add the touch support to your application in few lines of code. The following methods were added to CBCGPWnd and CBCGPBaseVisualObject classes:
    1. OnGestureEventZoom
    2. OnGestureEventPan
    3. OnGestureEventRotate
    4. OnGestureEventTwoFingerTap
    5. OnGestureEventPressAndTap
    6. ResetGestureOptions
    7. GetGestureConfig

      So, using our library, you can make your product fully compatible with Microsoft Surface and other touch-enabled devices!
  2. WinUI Tiles (see screenshot):
    1. Implemented custom views associated with a tile/caption button. Please call a new method CBCGPWinUITile:: SetView to associate the tile with the custom view. By default, CBCGPVisualContainerCtrl window will be created, but you can use any CWnd-derived classes as tiles view. Please take a look at the following WinUITilesDemo tiles:
      • Settings (see screenshot) and About (see screenshot): illustrates tile-associated view created with help of Visual Designer.
      • Other tiles (see screenshot):: illustrates dynamically-created tile-associated view.
         
    2. Added keyboard navigation support. A new method CBCGPWinUITiles:: GetCurSel returns a currently selected tile and CBCGPWinUITiles:: SetCurSel allows to change the current selection.
    3. Implemented Group Captions in the WinUI Tiles control: call new method CBCGPWinUITiles:: SetGroupName to specify the group name and other attributes such as text color or interactivity. The new registered message BCGM_ON_CLICK_WINUI_GROUP_CAPTION allows to catch group name mouse click event. Please take a look at WinUITilesDemo sample application to see this new feature in action.
    4. Added Navigation "Back Button". Call new method "CBCGPWinUITiles::EnableNavigationBackButton" to enable/disable the button and add new registered message BCGM_ON_CLICK_WINUI_NAV_BACK_BUTTON handler to catch click button event.
    5. Added custom caption buttons. AddCaptionButton method was added to CBCGPWinUITiles class. The new registered message BCGM_ON_CLICK_WINUI_CAPTION_BUTTON allows to catch caption button mouse click event.
    6. Implemented tiles scrollbar custom color theme: CBCGPWinUITiles:: SetScrollBarColorTheme allows to modify scrollbar color theme and CBCGPWinUITiles:: GetScrollBarColorTheme returns the current theme.
    7. Added custom badge glyphs support. Please specify/obtain a tile custom badge index using new CBCGPWinUITile methods SetCustomBadgeIndex/GetCustomBadgeIndex and set custom image list using CBCGPWinUITiles:: SetCustomBadgeGlyphs method.
       
  3. Chart Control:
    1. Added chart series shadow effect (see screenshot). To enable shadow under the chart series, please fill BCGPChartFormatSeries:: m_shadowType and call CBCGPChartSeries:: SetSeriesFormat method. Please take a look at BCGPChartExample demonstration program to see this feature in action.
    2. Implemented Pie and Polar charts interactivity.
       
  4. Diagram control:
    1. A diagram connector has line thickness and line style attributes now: SetThickness, GetThickness, SetStrokeStyle and GetStrokeStyle access methods were added to CBCGPDiagramConnector class.
    2. Added ability to specify a custom text format in Diagram Text Object: CBCGPDiagramTextDataObject::SetDefaultTextFormat was added.
       
  5. Graphics Manager:
    1. Added 'Underline' and 'Strikethrough' attributes to CBCGPTextFormat class. Also, we've updated CBCGPTextFormatDlg for changing these attributes (see screenshot).
    2. Implemented luminosity compare in CBCGPColor clas: CompareWith method and '<', '<=', '>', '>=' operators were added.
    3. Added 'Resize' method to CBCGPImage class.
    4. CBCGPGraphicsManager:: SetDrawShadowMode specifies the "shadow" rendering mode. When this mode is on, all graphics manager objects will be rendered using semi-transparent brush with a specific offset.
       
  6. Push Button:
    1. CBCGPButton has a new method 'SetAutoCheck'. Please call this method if you need to modify BS_AUTOCHECKBOX, BS_CHECKBOX, BS_RADIOBUTTON or BS_AUTORADIOBUTTON button style.
    2. Added a new attribute "DrawText": Call new method CBCGPButton::SetDrawText(FALSE) if you don't wish to display the text label (it may be useful in case of MSAA support when button should have an invisible name).
       
  7. Gauges:
    1. The following new gauge types are introduced in the version:
      • Switch control (see screenshot). "On/Off" gauge - implemented in class CBCGPSwitchImpl.
      • Static Frame (see screenshot). The simple frame gauge - implemented in class CBCGPStaticFrameImpl.
         
    2. Added new tick mark style 'BCGP_TICKMARK_TRIANGLE_INV' - "inverted" triangle tick mark (see screenshot).
    3. Implemented ability to specify minor tick mark relative position: SetMinorTickMarkPosition and GetMinorTickMarkPosition methods were added to CBCGPGaugeImpl class.
    4. New SetScaleTickMarkOutlineBrush/GetScaleTickMarkOutlineBrush CBCGPGaugeImpl class methods allow to specify/obtain tick mark outline brush.
    5. Added 'DefaultDrawFlags' attribute to CBCGPStaticGaugeImpl class.
       
  8. Visual Container:
    1. Implemented scroll bars custom color theme: new optional parameter 'CBCGPVisualScrollBarColorTheme* pColorTheme = NULL' was added to CBCGPVisualContainer:: EnableScrollBars method.
    2. Added copying of the multiple selections (using Ctrl key and mouse dragging). Use a new flag 'BCGP_CONTAINER_ENABLE_COPY' to activate this feature in CBCGPVisualContainer.
       
  9. Miscellaneous:
    1. Added user data support in CBCGPGridColumnsInfo class. Please call SetColumnData/ GetColumnData to set/get the user data associated with the specific grid column.
    2. Added help support to CBCGPMessageBox class: the developer can use MB_HELP style now to display "Help" button and specify help topic ID in dwContextHelpId member of BCGP_MSGBOXPARAMS structure.
       
  10. Changes in examples and samples:
    1. BCGPChartExample: added chart shadows demonstration
    2. BCGPGaugesDemo:
      • New "Switch" view demonstrates usage of the new Switch gauge.
      • Added demonstration of the new minor tick marks position and style.
      • "Car Climate Control" view demonstrates how to create how to implement digital dashboard with the various type of gauges (see screenshot).
    3. WinUITilesDemo: demonstrates new WinUI Tiles features such as views associated with tile, caption buttons and group Captions (see screenshot).
Fixes:
  1. CBCGPGraphicsManagerD2D: WIC Imaging Factory is initialized properly now if the latest Windows SDK is used along with VS 2012 (Windows 7 and Vista only).
  2. A skinned check box/radio button doesn't catch VK_RETURN key now.
  3. Fixed problem with rendering CBCGPProgressCtrl created with PBS_VERTICAL style.
  4. Fixed some RTL drawing issues. The following controls are rendered correctly now when a window has WS_EX_LAYOUTRTL style: CBCGPScrollBar, Calendar Bar, Message Box, Tab Control and others.
  5. Fixed problem with CBCGPEdit rendering when control doesn't have WS_BORDER style.
  6. CBCGPPropertySheet preserves the selected tab/list item if OnKillActive method of the active page has returned FALSE.
  7. Chart Control: fixed bug with positioning of the 3D sides upon specific series gap values.
  8. CBCGPRadialMenuObject is correctly rendered now when display high contrast mode is active.
  9. CBCGPToolbarDateTimeCtrl class is DPI-aware now.
  10. CBCGPDrawManager::ColorMakeLighter correctly works now with very dark color (which close to black).
Version 19.0. Released 10/04/2012
New features
  1. The product is fully-compatible with Visual Studio 2012 now! The evaluation version includes binary files for VS 2012 and Integration Wizard properly integrates the product with VS 2012 environment. Also, all our examples and samples were thoroughly tested with the new Visual Studio. The product Help file is compatible with Visual Studio 2012 Help System (MS Help Viewer 2.0) now.
     
  2. The product is fully tested under Windows 8 release.
     
  3. According to Microsoft request, the name "Metro UI" is not legal anymore, so we made the following changes in the product API:
     
    1. BCGM_ON_CLICK_METRO_UI_TILE -> BCGM_ON_CLICK_WINUI_UI_TILE
    2. CBCGPMetroUITile -> CBCGPWinUITile
    3. BCGP_METRO_BADGE_GLYPH -> BCGP_WINUI_BADGE_GLYPH
    4. BCGP_METRO_IMAGE_EFFECT -> BCGP_WINUI_IMAGE_EFFECT
    5. CBCGPMetroUITiles -> CBCGPWinUITiles

    In addition, MetroUITilesDemo was renamed to WinUITilesDemo.

    IMPORTANT: if you're using Metro UI Tiles component in your application, please make all required renames in the code.

    Other WinUI Tiles changes:
    1. WinUITilesDemo demonstrates now how to create live tiles with Chart control and Circular Gauge (see screenshot).
       
    2. Added caption support to CBCGPWinUITiles class (see screenshot). The following methods were added:
      • SetCaption
      • GetCaption
      • SetCaptionForegroundColor
      • GetCaptionForegroundColor
      • OnDrawCaption


    Please take a look at WinUITilesDemo sample application to see these features in action.

  4. Visual Designer:
    1. Added keyboard support: the user is able now to move/resize the gauges/diagram objects using arrow keys.
    2. Status bar has 2 new panes: location and size of the currently selected gauge/diagram object (see screenshot).
       
  5. Grid Control:
    1. Implemented a long-awaited variable row height support (see screenshot). The following methods were added to grid classes:
      • CBCGPGridCtrl:: CreateMultiLineRow create a multi-line row with specified text lines numbers.
      • CBCGPGridRow:: SetLinesNumber allows to modify row text lines number.
      • CBCGPGridRow:: GetLinesNumber returns the row text lines number.


      Please take a look at BCGPGridExample to see this feature in action.

    2. New "Freeze Groups" feature allows to disable horizontal scrolling of groups in the grid control. A new method FreezeGroups was added to CBCGPGridCtrl class.
       
    3. Improved grid elements margin/padding calculations:
      • Hierarchy level offset is based now on a new method GetHierarchyLevelOffset.
      • A grid element height is calculated now using the following new methods: GetBaseHeight and GetButtonWidth.
      • The following new methods for customization of the mouse wheel scrolling were added: SetMouseWheelSmoothScrollLimit and GetMouseWheelSmoothScrollLimit
         
  6. Chart Control:
    1. Added chart thumbnail mode (see screenshot). SetThumbnailMode/IsThumbnailMode methods were added to CBCGPChartVisualObject class. Please take a look at BCGPChartExample demonstration program ("Chart Thumbnails" view) to see this feature in action.
       
    2. Added a new Data Label content type - LC_DP_INDEX. This type is useful if chart has a lot of overlapped wide labels (such as in Pie or Funnel chart types). Simply specify the label format as index and display names/values left of the index value in the chart legend (see screenshot). Please take a look BCGPChartExample demonstration program ("Pie/ Doughnut/Torus" views) to see this new feature in action.
       
    3. CBCGPChartSeries class has a new flag 'm_bIncludeInvisibleSeriesToLegend'. Set it to TRUE if you wish to display the hidden series entry in the chart legend.
       
    4. Implemented user-defined data support in CBCGPChartSeries: GetUserData/SetUserData methods were added.
       
  7. Gauges:
    1. CBCGPImageGaugeImpl: added image alignment support. SetImageAlign, GetHorizontalAlign and GetVerticalAlign methods were added to this class.
       
    2. CBCGPStaticGaugeImpl: added 'opacity' attribute. You can modify the static gauge (such as image, text or color indicator) opacity by calling new method SetOpacity or get it by calling GetOpacity.
       
    3. CBCGPStaticGaugeImpl:: added fill/outline brush attributes. SetFillBrush/GetFillBrush and SetOutlineBrush/GetOutlineBrush methods were added.
       
    4. CBCGPCircularGaugeImpl has a new helper method: GetSubGaugeByID(UINT nID).
       
  8. Miscellaneous changes:
    1. CBCGPPropertySheet: implemented tabs scrolling support in PropSheetLook_Tabs mode: EnableTabsScrolling/ IsTabsScrollingEnabled methods were added.
    2. Added new global flag "CBCGPGraphicsManagerD2D::m_bForceSoftwareRendering". If you set this member to TRUE on your application startup, the render targets will use software rendering only. This may be helpful if computer doesn't have updated DirectX drivers.
       
Fixes:
  1. Resolved flickering upon tab switching in CBCGPPropertySheet
  2. Fixed bug with displaying skinned disabled edit control.
  3. Resolved problem with drawing some gauges such as text or digital indicators after container scrolling.
  4. Grid control: if EnableFilterBar method was called more than once, a memory leak was occurred.
  5. Grid control: improved mouse wheel scrolling behavior.
  6. Grid control: fixed drawing bug of checkbox item in some visual themes.
  7. Grid control: fixed drawing bug of expand box in HDPI mode.
  8. CBCGPMessageBox: fixed bug with closing message box when embedded check box is clicked.
  9. Diagram control: fixed scaling bug.
  10. Diagram control: fixed bug with a drawing of multi-point connectors.
  11. Chart control: CBCGPChartAxis::ValueFromPoint returns a correct value now when the logarithmic scaling is used.
Version 18.0. Released 06/27/2012
New features
  1. Added support for Visual Studio 2012 RC. The product was thoroughly tested under this new environment and all tests were passed.
     
  2. The product is fully tested on Windows 8 Release Preview.
     
  3. Added a new Metro style Tiles control (see screenshot), which implements the following features:
    • Square and wide tiles.
    • Tile groups.
    • Rectangular or rounded tile shapes.
    • Horizontal ("Landscape") or vertical ("Portrait") layouts.
    • Tile headers and multi-line texts.
    • Tile images.
    • Numeric and iconic badge support.
    • "Live" tiles with image animation effects.
    • Custom colors and brushes.
    • Custom tiles.
    • OS-independent: since our implementation just emulates Windows 8 Metro style Tiles, you can use the our Metro Tiles control under all supported operating systems!


    This control is fully-customizable, so you can use it with your own images, textured brushes and custom shapes (see screenshot).

    The Metro Tiles control is suitable for the wide range of user interfaces such as application start page, activity monitor and many others. Please run the new MetroUITilesDemo sample to see the new control in action.

  4. Chart Control implements the following new features:
    • Added advanced legend (see screenshot). Using this new component, you can add the following chart legend features:
      • Ability to show legend entries from multiple charts.
      • Custom entries support.
      • Custom legend title.
      • Custom legend cell format (including colors and text label formats).
      • Custom columns.
      • Vertical and horizontal layouts.
      • Automatic scrolling.
      • Print and print preview support.
      • Mouse events support allows to create an interactive legend entries (such as buttons or checkboxes).
      • Ability to show the legend in any window such as Visual Container, docking pane or any others.
      • CBCGPChartView class integration (call EnableAdvancedLegend method).
         

      Please take a look at BCGPChartExample application ("Chart Advanced Legend" view) to learn how to use this new component. In general, you've to instantiate CBCGPChartLegendVisualObject object (if you're using the legend inside CBCGPVisualContainer) or create CBCGPChartLegendCtrl window and add related chart(s) using CBCGPChartLegendVisualObject::AddRelatedChart method.

    • Texture-based custom themes. Since CBCGPBrush is working now with texture images, you can easily create your own, nice-looking custom themes! You can assign textures to the chart series, walls, plot area and legend. Please run BCGPChartExample application, choose a "Custom Theme (Textures)" in "Theme" toolbar combo box and examine a new fresh look! The following screenshots are illustrating how the various chart type may look with the new textured brushes:
    • New method CBCGPChartCtrl::DoPrint simplifies printing support if the chart is created inside dialogs or forms.
       
    • Added method CBCGPChartTheme::PrepareWallBrushes. Call this method to assign a  single brush for all 3D chart wall and floor objects with automatic lighting/shading.
       
  5. Grid Control additions:
    • Added active accessibility support for the grid and report controls.
    • New class CBCGPGridCaptionRow was added for the grid control (see screenshot). To add the caption please call new CBCGPGridCtrl::AddCaptionRow method. This class can be used to separate the contents of the grid. Please see the usage in BCGPGridExample program at "Cell Types" tab.
    • Added support for the currency values.
    • New options to customize inactive selection color in the grid. See new members m_SelColorsInactive and m_GroupSelColorsInactive in CBCGPGridColors class.
    • New option BCGP_GRID_FINDREPLACE_PARAM::bStartWith extends the find/replace mechanism.
    • New virtual method CBCGPGridRow::CanSelect allows to skip some rows while navigating by keyboard in the grid.
    • New method method CBCGPGridCtrl::SetExportTextSeparator allows to customize some exporting settings.
    • New following helpers were added: CBCGPGridCtrl::IsItemInRange, CBCGPGridCtrl::IndexToOrder, CBCGPGridCtrl::CreateCaptionRow.
       
  6. Graphics Manager:
    • Added textured brushes support. The following new methods were added to CBCGPBrush class:
      • New constructor CBCGPBrush(const CBCGPImage& image, const CBCGPColor& clrFillAlt, BOOL bIsWaterMarkImage)
      • GetTextureImage
      • HasTextureImage
      • IsWaterMarkImage
      • SetTextureImage
      • ClearTextureImage
         
    • CBCGPColor has new attributes IsDark() and IsLight().
    • Added new drawing methods to CBCGPGraphicsManager class: DrawCheckBox and DrawRadioButton.
       
  7. Miscellaneous additions:
    • Added active accessibility support for the calendar control.
    • BCGPDiagramDemo and BCGPGaugesDemo illustrates how to use texture brushes in the diagram and gauge controls (see screenshot).
    • CBCGPProgressDlgParams has a new member 'BOOL m_bWaitForMessages'.
    • New static member CBCGPMessageBox::m_bDontUseDefaultIcon allows enable/disable a message box icon.
    • New class CBCGPDiagramView implements a view with embedded diagram control.
    • CBCGPBrushButton has a new public member 'CBCGPEditBrushOptions m_Options'. You can customize CBCGPEditBrushDlg invoked by the button appearance now.
    • CBCGPButton::SetStdImage has a new optional parameter 'CBCGPMenuImages::IMAGE_STATE stateDisabled'.
Fixes:
  1. Chart control: improved 3D charts rendering performance.
  2. Chart control: fixed problem with drawing Pyramid chart when all data points have zero value.
  3. Chart control: fixed some problems with the small-sized chart layout calculation.
  4. Grid control: CBCGPGridCheckItem doesn't change a value when the  space button was pressed in the read-only mode.
  5. Grid control: collapse/expand buttons of the groups are not scrolled in freeze columns mode.
  6. Grid control: Fixed colors in some visual themes.
  7. Grid control: fixed scrolling by keyboard.
  8. Grid control: CBCGPGridCtrl::GetSelectedItems does not return hidden or filtered items now. CBCGPGridCtrl::IsItemSelected is fixed.
  9. Grid control: fixed bug with auto closing the in-place edit on scrolling. Now the grid auto-saves changes and closes the in-place editor before scrolling.
  10. Grid control: CBCGPGridCtrl::EnsureVisible is working correctly now.
  11. CBCGPButton::UncheckRadioButtonsInGroup doesn't check invisible button now.
  12. Radial menu: fixed icon drawing bug. In some cases the icon was drawn "blurred".
  13. CBCGPEdit: appearance of the control in the Visual Manager mode has been improved.
  14. Fixed some bugs with re-loading recent size and position of the dialogs and property sheets.
  15. Fixed bug with nested redrawing in CBCGPCalendar::RecalcLayout method.
  16. Diagram: fixed bug with connectors positioning when the diagram scrolling/zooming was performed.
  17. Help: fixed style problems in help files for Visual Studio 2005/2008/2010.
Version 17.1. Released 04/02/2012
New features
  1. Added support for Visual Studio 11 Beta.
     
  2. The library is fully tested on Windows 8 Consumer Preview operating system.
     
  3. Chart Control implements new and updates existing features:
    • Missing data support. Call CBCGPChartVisualObject::AddChartEmptyData or CBCGPChartSeries::AddEmptyDataPoint to add empty data points. Call CBCGPChartSeires::SetTreatNulls to tell a series how to treat missing data (as values, skip, or don't paint). This feature is supported for line, area, column, bar, bubble, point, ternary and stock charts.
    • Support for "smart labels" (see screenshot). This feature intelligently lays out data labels preventing overlapping. Call CBCGPChartVisualObject::EnableSmartLabels to enable or disable this feature (now it's enabled by default for supported chart types). Call CBCGPChartVisualObject::SetSmartLabelsParams to fine tune the "smart labels" algorithm. This feature is supported for line, area, point, bubble and ternary charts.
    • Stock chart can display data as a line based on open, high, low, close or custom calculated value. You can call CBCGPChartStockSeries::SetStockSeriesType with newly added SST_ types to set the desired stock series type. Call CBCGPChartStockSeries::SetCustomStockValueCallback or override GetCustomStockValue method in a derived class to return custom calculated stock values when you set SST_LINE_CUSTOM type.
    • Added a new method CBCGPChartAxis::UpdateSplitAxisSizeByPercent enabling you to adjust sizes of split axes programmatically.
    • Added two new color themes: "Black and Green" (CT_BLACK_AND_GREEN - see screenshot) and "Black and Blue" (CT_BLACK_AND_BLUE - see screenshot).
       
  4. Diagram Control implements new and updates existing features:
    • Added zoom support for diagram, all diagram shapes and connectors support proportional scaling.
    • Improved features for runtime editing of diagram. See new DiagramEditor sample (see screenshot).
    • Implemented copy/paste support for the diagram editors.
    • Added BCGM_DIAGRAM_POS_SIZE_CHANGED event.
    • Added support for drag and drop connectors and shapes in edit mode.
    • Added shapes coloring. The following new shapes properties were added to CBCGPDiagramVisualObject class:
      • GetFillBrush/SetFillBrush
      • GetOutlineBrush/SetOutlineBrush
      • GetShadowBrush/SetShadowBrush
         
    • Added connectors and connector arrows coloring. The following new properties were added to CBCGPDiagramConnector class:
      • GetOutlineBrush/SetOutlineBrush
      • GetArrowOutlineBrush/SetArrowOutlineBrush
      • GetArrowFillBrush/SetArrowFillBrush
         
    • Implemented new shape types:
      • Image item - CBCGPDiagramImageObject class
      • Table shape - CBCGPDiagramTableShape class.
         
    • A new class CBCGPDiagramCustomShape implements custom shapes support.
    • Helper diagram's entity "ConnectionPoints" was renamed to "ConnectionPorts".
    • The method CBCGPDiagramVisualObject::SetTextValue was renamed to CBCGPDiagramVisualObject::SetTextData for consistence.

      You can see the new features in action in the new sample DiagramEditor and modified example BCGPDiagramDemo.
       
  5. Added a new TreeMap control (see screenshot). The Treemap is a space-constrained visualization of hierarchical structures. It shows attributes of leaf nodes using size and colors. Please take a look at new TreeMapDemo sample to see this control in action.
     
  6. Message Box:
    1. The look of the product message boxes was significantly improved: the area behind buttons is painted by Visual Manager using shading effects (see screenshot). If a developer prefers the old look, it's possible to set a new member BCGP_MSGBOXPARAMS::bDrawButtonsBanner to FALSE. In addition, we've improved the multi-line text layout for better appearance.
    2. For your convenience displaying of optional check box can be done with a single line of code: BCGPMessageBox and BCGPMessageBoxEx methods have now 2 new optional parameters:
      • LPCTSTR lpszCheckBoxLabe // Check box label (such as "Don't show this message again")
      • BOOL* pCheckBoxResult // IN/OUT: check box initial state and result
         

      Please take a look at MessageBoxDemo sample to see these features in action.

  7. Progress Dialog:
    1. Implemented "infinite" progress: if you don't know how long the process can take, but wish to show some "working indication" without creating a custom animation, just set CBCGPProgressDlgParams::m_bShowInfiniteProgres to TRUE (see screenshot):
    2. Improved dialog appearance.
       
  8. Graphics Manager:
    1. Added scaling support for the following graphics classes:
      • CBCGPPoint
      • CBCGPRect
      • CBCGPRoundedRect
      • CBCGPEllipse
      • CBCGPGeometry
      • CBCGPTextFormat
         
    2. Implemented printing support: SetPrintInfo/GetPrintInfo methods were added.
       
  9. Visual Control and Visual Container:
    • Added scroll support to visual container: CBCGPVisualContainer::EnableScrollBars enables/disables container scroll bars. A new virtual method OnScroll was added to CBCGPBaseVisualObject class.
    • Added "click and hold" support to CBCGPBaseVisualCtrl class. The following new methods were implemented to support this feature:
      1. GetClickAndHoldID
      2. GetClickAndHoldRect
      3. StartClickAndHold
      4. StopClickAndHold
      5. OnClickAndHoldEvent
         
    • Added printing support. Just call CBCGPBaseVisualCtrl::DoPrint or CBCGPBaseVisualCtrl::DoPrint method to print your visual container/control content.
    • Implemented user data support in CBCGPBaseVisualObject class: GetUserData/SetUserData methods were added.
    • Improved multiple-selection mode in CBCGPVisualContainer:
      1. SelectAll method was added.
      2. Implemented 2 different "hit testing inside selection" behaviors: SetHitTestSelected and IsHitTestSelected methods were added.
      3. Added FireSelectionChangedEvent virtual method and BCGM_CONTAINER_SELCHANGED registered message
         
  10. Visual Designer
    • The designer supports now both gauges and diagrams (see screenshot)
    • Implemented multi-selection and element alignment operations.
       
  11. Grid control
    • Added ability to disable grid lines in the grid: new CBCGPGridCtrl::EnableGridLines method.
    • Added CBCGPGridCheckItem::SetLabel method to set text label for the grid check item.
       
  12. Calendar (Planner) control
    • Added ability to scroll all-day events in the calendar header area.
    • Added multi-line (word wrapping) support for the multi-hour appointments.
       
  13. Miscellaneous additions
    • CBCGPDrawManager line, arc and ellipse drawing methods have a new optional parameter: int nPenStyle = PS_SOLID.
    • CBCGPProgressCtrl supports PBS_MARQUEE style now.
    • Added scaling support to CBCGPTagCloud control.
       
  14. Examples and samples
    • BCGPChartExample has the following additions:
      1. Stock chart ("Stock Charts | Stock") demonstrates new StockSeriesType types (line drawn by OHLC and custom values) (see screenshot).
      2. Added demonstration of real time stock chart in virtual mode ("Stock Charts | Stock Real Time").
      3. Added "Advanced Features | Smart Data Labels" view, which illustrates the "smart labels" feature.
      4. Added Print/Print preview support to each view.
         
    • BCGPCalendarDemo demonstrates header (all-day events) scrolling now.
    • Added skins support to BCGPControls example (see screenshot)
    • BCGPDiagramDemo demonstrates diagram Zoom In/Zoom Out features.
    • The following new samples were added:
    1. DiagramEditor demonstrates how to edit the Diagram Control.
    2. TreeMapDemo: demonstrates new TreeMap control.
       
Fixes:
  1. Chart control: when an axis works in "fixed interval mode" the interval size is not adjusted anymore to fit the plot area size. Instead, the last interval can be truncated and displayed partially.
  2. Chart control: fixed problem with label interlacing when axis becomes too small.
  3. Pie chart correctly displays very small slices.
  4. Chart control: fixed printing (and scaling) issues with axes in "fixed interval" mode.
  5. Chart control: fixed printing issues with legend size.
  6. Chart control: split axes (when you split an axis to two axes using CBCGPChartAxis::Split) take correct size.
  7. Chart control: fixed labeling and zooming issues with date-time axes.
  8. Chart control: fixed layout of radar chart.
  9. Grid control: fixed bug with alignment of merged cells.
  10. Grid control: mouse click was disabled for a grid check item (CBCGPGridCheckItem) in read-only mode
  11. Grid control: fixed bug with selection border.
  12. Property Sheet: fixed bug with redrawing non-client area when the property sheet is skinned and a developer changes the currently activated visual manager or DWM composition is being changed.
  13. Fixed drawing bug in CBCGPListBox when control has a horizontal extent.
  14. CBCGPButton doesn't draw unnecessary focus rectangle in some visual managers now.
  15. CBCGPComboBox correctly draws drop-down button in all Windows themes now.
  16. CBCGPGraphicsManagerGDI draws lines, arcs and ellipses with a pen style different from PS_SOLID using anti-aliasing methods.
     
Version 17.0. Released 01/23/2012
New features
  1. Added the long awaited Diagram Control (see screenshot), which implements the following features:
    • Ability to add unlimited number of diagram shapes and connectors.
    • Various predefined diagram blocks, including circles, triangles, boxes, rounded boxes, parallelograms, trapezoids, stars and clouds.
    • Table diagram block.
    • Text labels inside diagram blocks.
    • Smart straight and curved diagram connectors with 5 types of customizable arrows.
    • Interactive diagram editing.
    • Ability to save and load diagram to/from XML.
    • Copy diagram image to the Clipboard.
    • Save diagram image to a file.
    • Please run the new BCGPDiagramDemo example to see the new control in action.
       
  2. Chart Control implements new and updates existing features:
    • Axis scale breaks (see screenshot). Call CBCGPChartAxis::EnableScaleBreaks to enable this feature for an axis. Scale breaks can be generated automatically or added manually. See the updated BCGPChartExample | Advanced Features | Scale Breaks for more info.
    • Added new chart category - Histogram. Use the new BCGPChartHistogram category and CBCGPChartHistogramSeries class to create series of this type.
    • Implemented two new technical indicators for Stock charts (see screenshot): Bollinger Bands and MACD. Use CBCGPChartBollingerBandsFormula and CBCGPChartMACDFormula classes to add these indicators to Stock charts.
    • Stock charts are optimized to handle very large data. Call CBCGPChartStockSeries::AddData and pass a CArray of CBCGPChartStockData objects to quickly initialize a stock series with market data.
    • Now stock series are working in "index mode" mode by default. It means that data points are accessed by index, but X axis displays labels according to date stored in the X component of data point.
      Important note. Do not call CBCGPChartAxisX::SetFixedDisplayRange with date/time values, use data point indexes instead.
    • Now you can create virtual stock series by overriding only three methods: IsOptimizedLongDataMode (should return TRUE), GetDataPointCount (should return the total number of data points in a stock series) and GetStockDataAt, which should return the data obtained from external source.
    • Line, Area, Column, Bar and Histogram series can handle very large volumes by trading off the ability to customize individual data point properties. Call CBCGPChartSeries::AddDataPointsOptimized or CBCGPChartVisualObject::AddDataPointsOptimized with array of double values to add a batch of data points. Take a look at BCGPChartDemo | Large Volume Charts | Huge Data to see this feature in action.
    • CBCGPChartAdvancedFormula output series now takes advantage of "optimized long data" feature, which allows to increate performance and reduce memory consumption. Set CBCGPChartAdvancedFormula::m_bUseLongData to FALSE before creation of output series to use "regular" data points.
    • Added support for tooltips (see screenshot). Call CBCGPChartCtrl::EanbleTooltip to enable tooltips for a chart control. You can override CBCGPChartSeries::OnGetDataPointTooltip to customize tooltip text for a specific data point. You can override CBCGPChartVisualObject::OnGetToolTip to customize a tooltip displayed at specified client coordinates.
    • You can customize series fill opacity by calling BCGPChartFormatSeries::SetSeriesFillOpacity.
    • Added new notifications about axis zoom and scroll actions: chart control's owners will receive BCGM_ON_CHART_AXIS_ZOOMED and BCGM_ON_CHART_AXIS_SCROLLED messages. Also you can override OnAxisZoomed and OnAxisScrolled overrides in CBCGPChartVisualObject.
    • CBCGPChartAxis has two new members m_szMaxFixedLabelSize and m_strMaxDisplayedLabel. The first member allows to specify maximal axis label size (in pixels), which won't be overridden by internal calculations. The second allows to specify a label whose size will be used as maximal label size.
    • Output series type encapsulated in CBCGPChartAdvancedFormula can be customized by overriding of GetOutputSeriesType and GetOutputSeriesCategory methods.
    • CBCGPChartObject has a new coordinate mode CM_PIXEL_FIXED_SIZE. Now you can add objects of fixed size to the diagram area and specify object size and position in pixels.  
    • CBCGPChartLongSeries has a new method GetNearestScreenPoint, which calculates position for interactive markers.
    • Chart View correctly handles Windows 7 task bar interaction.
    • Pan mode correctly scrolls different series displayed on different axes.
       
  3. Added a new Tag Cloud control (see screenshot). This control is a visual representation for text data ("tags") and the importance of each tag is shown with font size or color. The control implements the following features:
    • Unlimited number of tags.
    • Alphabetical sorting.
    • Sorting by value.
    • Customizable text color.
    • Customizable text format.
    • Tooltip support.
       
  4. Visual Designer for Gauges (see screenshot)
    • Now you can create top-quality digital dashboards using the new WYSIWYG design tool in minutes!
    • Arrange gauges on the design surface and change their properties.
    • Save your dashboard to XML and load it in a C++ application.
    • See the updated BCGPGaugesDemo to learn how to integrate designed dashboards with your application.
       
  5. Graphics Manager
    • CBCGPGeometry supports 2 filling methods now: alternate or winding. GetFillMode/SetFillMode methods were added to this class.
    • New static method CBCGPColor::CreatePalette creates palette from the colors array.
    • CBCGPColor::GetRGBArray returns colors array in order suitable for displaying in 14-columns grid (see screenshot).
    • CBCGPBrush has '==' operator now.
    • Added CBCGPBrush::SetOpacity method.
    • CBCGPTextFormat: added character set support. This class has a new constructor and GetCharSet and CharSetToLocale new methods.
    • CBCGPGraphicsManager::CleanResources has new, optional parameter 'BOOL bDetach'. Setting this parameter to TRUE allows to detach graphics resources from the manager.
    • Added content scaling support: CBCGPGraphicsManager has new methods: SetScale/GetScale
       
  6. New controls and dialogs
    • CBCGPEditBrushDlg (see screenshot) allows to edit CBCGPBrush properties.
    • Added Line style combobox control - CBCGPLineStyleComboBox
    • Added Brush button - CBCGPBrushButton
    • CBCGPTextFormatDlg (see screenshot) allows to edit CBCGPTextFormat properties.
       
  7. Gauges
    • CBCGPColorIndicatorImpl has new constructor where you can specify background brush.
    • CBCGPTextGaugeImpl has new constructor where you can specify background brush.
    • CBCGPBaseVisualObject has new virtual method 'OnMouseDblClick'
    • CBCGPVisualContainer has new methods 'GetByID' and 'LoadFromFile'
       
  8. Grid control
    • New method CBCGPGridCtrl::EnableGridLines is used to disable grid lines in the grid control.
    • New method CBCGPGridCheckItem::SetLabel allows to draw text label inside checkbox-item.
       
  9. Miscellaneous additions
    • CBCGPMemDC has new, optional parameter 'dblScale'. You can create the memory DC with ability to scale it.
    • Improved CBCGPButton's focus rectangle appearance when control is located on Aero ("glass") area.
    • CBCGPDrawManager has new method 'DrawFocusRect' which allows to draw focus rectangle on Aero.
    • CBCGPInplaceToolTipCtrl utilizes Visual Manager tooltip drawing now.
    • Added pin, description and separator support for CBCGPListBox. The following new methods were added to CBCGPListBox class:
      1. EnablePins
      2. HasPins
      3. EnableItemDescription
      4. HasItemDescriptions
      5. SetItemDescription
      6. SetItemPinned
      7. IsItemPinned
      8. ResetPins
      9. AddSeparator
      10. IsSeparatorItem
      11. OnClickPin
      12. OnClickItem
      13. OnReturnKey
         
  10. Examples and samples
    • BCGPChartExample has the following additions:
      1. "Advanced Features | Scale Breaks" illustrates the new "scale breaks" feature.
      2. "Large Volume Charts | Huge Data" demonstrates the performance of "optimized long data mode".
      3. "Large Volume Charts | Huge Average Data" shows how to add interactive markers to BCGPChartLongData chart.
      4. "Large Volume Charts | Virtual Chart" describes the technique required to create virtual charts, where the data is taken from an external source.
      5. "Stock Charts"  demonstrate new technical indicators.
    • BCGPGaugesDemo shows how load dashboard from the Visual Designer data file.
    • BCGPGridExample show how to create grid control with watermark image (see screenshot).
    • The following new samples were added:
    1. BCGPDiagramDemo: demonstrates how to use new Diagram Control.
    2. PropertyGridMDIDemo: demonstrates new property grid features and how to use the property grid in MDI application.
    3. TagCloudDemo: demonstrates new Tag Cloud control.

 

Fixes:
  1. CBCGPCircularGaugeCtrl::CreateCustomGauge correctly updates control owner now.
  2. Fixed bug with image transparency in CBCGPEdit::SetBrowseButtonImage method.
  3. CBCGPGraphicsManagerD2D::DrawText correctly draws text in non-UNICODE applications now.
  4. Fixed bug in CBCGPGridCheckItem with SPACE button. Disabled CBCGPGridCheckItem does not modify state of the checkbox on pressing SPACE.
  5. Fixed bug in the grid with painting the selection border in virtual mode.
  6. Fixed bug in CBCGPGridCtrl:: FindRowByData. The second parameter bSearchSubItems is used properly now.
  7. Fixed bug with grid item drag and drop. The click at the button inside the grid item does not start dragging now.
  8. Fixed bug in CBCGPGridCtrl::SetCurSel with selecting all content. The grid with no selected item processes "SelectAll" command properly now.
  9. Radar chart correctly displays categories.
  10. Fixed a problem when a chart axis was incorrectly truncated because of incorrectly specified scroll range (CBCGPChartAxis::SetScrollRange). Now a larger scroll range can't be overridden by smaller range. To reset a scroll range and specify smaller values reset it by calling SetScrollRange without parameters.
  11. 3D charts correctly display axis names (now they are aligned to axes and rotated with chart).
  12. Fixed infinite loop in CBCGPChartAxis::ApproximateValue.
  13. Fixed incorrect calculation of axis scrollbar thumb.
  14. Polar X axis correctly handles ValueFromPoint requests.
  15. CBCGPChartCtrl::CreateCustomChart automatically sets an owner of newly created chart visual object.
  16. Interline coloring effect is correctly clipped when chart is zoomed in.
  17. Chart in history mode does not display empty data point at the last X coordinate.
  18. CBCGPChartHistoricalLineSeries displays history from X = 0 (it was 1 in previous version).
Version 16.1. Released 10/17/2011
New features
  1. The product is ready for Windows 8!

    All product functionalities were thoroughly tested under Windows 8 preview. Few minor bugs addressed to Windows 8 have been fixed and we confirm that our product is ready for use in this new operating system.
     
  2. Visual Studio 2011 Developer Preview support.


    For your convenience we added project/solution files for Visual Studio 2011, so if you begin porting your projects to the new Visual Studio, our library is ready for this. Also, we've updated our Integration Wizard - now it includes support VS 2011. Please note that Visual Studio 2011 support currently is available for the retail version only.

  3. Chart Control implements new and updates existing features:
    • Enhanced custom axis support. Now you can add a custom axis using CBCGPChartAxis::Split method at the top or at the bottom of the axis being split (see a new optional parameter bCustomAxisAtTop).
    • Added a new method CBCGPChartVisualObject::RemoveCustomAxis.
    • Added a new axis cross type CBCGPChartAxis::CT_FIXED_DEFAULT_POS, which makes an axis to be fixed at its default position at the edge of plot area.
    • Created infrastructure for custom financial indicators:
      • A new CBCGPChartAdvancedFormula class can be used as a base class for custom indicators.
      • CBCGPChartSeries::GetDataBuffer allows to store intermediate calculations for each data point in a series. You can allocate unlimited number of buffers.
         
    • Implemented several technical indicators in the following new classes:
      • CBCGPChartMAFormula implements moving averages (simple, exponential, smoothed, linear weighted)
      • CBCGPChartStochasticFormula implements Stochastic Oscillator
      • CBCGPChartRSIFormula implements RSI indicator (smoothed, exponential, simple).

        Please take a look at CBCGPChartExample | Stock Chart to see the new indicators and custom axis support in action (see screenshot).
         
    • Added "Manhattan Stacked Column" chart type (see screenshot). To enable this kind of charts you have to use the new CBCGPChartDiagram3D::SetExplicitGrouping method.
    • CBCGPChartExample | Advanced Features | Custom Axis illustrates how to add a standalone custom axis (see screenshot)
       
  4. Grid Control implements the following new features:
    • The following methods are virtual now:
      • CBCGPGridCtrl::StartSelectItems
      • CBCGPGridCtrl::SelectItems
      • CBCGPGridCtrl::StopSelectItems
    • Added a new optional parameter bUpdate to CBCGPGridCtrl::EnableFilterBar method
       
  5. Graphics Manager
    • CBCGPGraphicsManager::CreateInstance has a new optional parameter: CBCGPGraphicsManagerParams* pParams. Using this new parameter you can specify the target DPI, alpha mode and rendering type
       
Fixes:
  1. CBCGPChartAxis::Split correctly splits multiple axes.
  2. Fixed problem with appearance of 32 bit images in CBCGPBaseVisualCtrl::OnDrawLayeredPopup under Windows 8.
  3. Fixed problem with incorrect circular gauge shape in specific scale angles.
  4. Fixed problem with Grid Filter bar drawing in "freeze columns" mode.
  5. Now CBCGPButton::m_clrFace is used when a button has a Visual Manager theme.

Version 16.0. Released 07/26/2011
New features
  1. Chart Control has been extended with the following new 3D chart types:

    The new 3D charts support software and hardware (OpenGL-based) rendering.  You can see the new chart types in action in the updated CBCGPChartExample. Also, please visit our new Charts Gallery and see how many professional and nice-looking charts you can create using our toolkit.

  2. Grid Control implements the following new features:
    • Multi-line text support for grid items (see screenshot): word wrapping, understanding "\r\n" line breaks, multiline in-place editor, horizontal and vertical align, printing. Please take a look at BCGPGridExample to see this feature in action.
    • Added ability to subclass the default grid header by overriding the virtual GetColumnsInfo() function.
      You can learn how to extended a grid header with two header lines and merged header items in BCGPGridExample, "Multi-Line Header" tab.
    • Added ability to animate a grid item content - see BCGPGridExample, "Cell Types" tab.
     
  3. Gauge components have the following new interactive controls:
    • Knob (see screenshot)
    • Radial menu (see screenshot)
    • Rotation control (see screenshot)
    • Analog clock (see screenshot) (in previous versions this control was implemented in examples code).
    • Added gauges tooltip support.
    • Added interactive gauge support:
      • SetInteractiveMode/IsInteractiveMode methods were added to CBCGPGaugeImpl class.
      • BCGM_ON_GAUGE_START_TRACK, BCGM_ON_GAUGE_TRACKBCGM_ON_GAUGE_FINISH_TRACK and BCGM_ON_GAUGE_CANCEL_TRACK registsred messages were added.
      • New structure CBCGPGaugeTrackingData contains gauge tracking data such as last tracking message, screen point and current gauge value.
    • CBCGPLinearGaugePointer has the following new styles:
      • BCGP_GAUGE_NEEDLE_CIRCLE
      • BCGP_GAUGE_NEEDLE_DIAMOND
         

    Using these new controls and features you can easily create fully-functional, interactive digital dashboards. Please run BCGPGaugesDemo to see these features in action.

  4. Calendar and Planner
    • Added working interval support: CBCGPPlannerManagerCtrl::SetViewHourInterval and CBCGPPlannerManagerCtrl::SetPrintHourInterval method were added.
    • Added ability to customize "Up"/"Down" icons
       
  5. Graphics Manager
    • CBCGPImage can be initialized from HICON and HBITMAP now
    • Added method CBCGPGraphicsManager::DrawBeveledRectangle
       
  6. Examples and samples
    • For your convenience, all examples and samples were prepared for Visual Studio 2010. Please open MakeExamplesVS2010.sln solution to build them without conversion in Visual Studio 2010 environment.
    • BCGPChartExample illustrates new 3D charts.
    • BCGPGaugesDemo shows how to create the new knob and radial menu gauges.
Fixes:
  1. Fixed some problems in Chart Control.
  2. Fixed problem with drawing CBCGPBreadcrumb on the DWM aero area.
  3. Fixed problem with drawing CBCGPScrollBar on the DWM aero area.
  4. Fixed memory/resource leak in graphics manager gradient brush initialization.
  5. CBCGPLinearGaugeImpl: fixed some problems with gauge appearance under Windows XP (in GDI mode).
  6. Fixed bug with displaying incorrect value in CBCGPCalculator::UpdateDisplay.
  7. Fixed bug in CBCGPDlgImpl::LoadPlacement/SavePlacement: the dialog location is restored correctly now when the Windows task bar is located on the left or top side.

Version 15.1. Released 03/01/2011
New features
  1. Chart Control:
    1. The following new chart types were added:
    2. Added support for logarithmic scales of any base (see screenshot).
       
    3. Added trend line support with the following built-in approximations (see a new class CBCGPChartTrendFormula):
      1. Linear
      2. Exponential
      3. Logarithmic
      4. Power
      5. Polynomial of order 2 - 6 (see screenshot).
         
    4. Transition (formula) support (see screenshot) has been implemented in a new class CBCGPChartTransitionFormula. It can take several input series and generate data points using either built-in transitions (sum, diff, multiply, divide, average etc), or custom transitions (you can specify a callback implementing a custom formula).
       
    5. Virtual series (see screenshot) support allows to display any custom function on the diagram.
       
    6. "Chart Objects" feature (see screenshot) allows you to add annotation and other objects (like lines or colored zones) to a Chart or diagram. The following new classes were added for this feature:
      1. CBCGPChartObject
      2. CBCGPChartLineObject
      3. CBCGPChartRangeObject
      4. CBCGPChartTextObject
      5. CBCGPChartAxisMarkObject.
         

      The main Chart controller (CBCGPChartVisualObject) provides the following helpers to allow you to add Chart Objects quickly using the following methods: AddChartObject, AddChartTextObject, AddChartLineObject, AddChartRangeObject and AddChartAxisMarkObject.

    7. "Chart Effects" feature enables you to add interline coloring effects to a diagram (see screenshot). See new classes CBCGPChartBaseEffect, CBCGPChartInterLineColoringEffect.
       
    8. Axes can display scroll bars (see screenshot). Use two new methods ShowScrollBar and SetAlwaysShowScrollBar defined in CBCGPChartAxis, or helpers defined in CBCGPChartVisualObject: ShowScrollBar (enables scroll bar for a given axis) and ShowScrollBars (enables scroll bars for all axes).

    Please take a look at BCGPChartExample program to see these features in action.

  2. Linear Gauge (see screenshot) has been added to the Gauges collection: the new class CBCGPLinearGaugeImpl implements the linear gauge. Please take a look at BCGPGaugesDemo to see the gauges in action.
     
  3. Added ability to save/load Dialogs and Property Sheets window placements. The following methods have been added:
    1. CBCGPDialog::EnableLoadWindowPlacement
    2. CBCGPPropertySheet::EnableLoadWindowPlacement
       

    Please take a look at ResizableForm sample program to see this feature.

  4. Grid additions:
    1. Added Find support - the following new methods have been added to the CBCGPGridCtrl class:
      • OpenFindReplaceDlg
      • CloseFindReplaceDlg
      • Find
      • OnPrepareFindString
      • OnTextNotFound
      • OnTextFound
         

      Please take a look at BCGPGridExample to see this feature in action.

    2. Added a new virtual method 'CBCGPGridCtrl::OnAfterInplaceEditCreated which is called right after the in-place edit has been created.
Fixes:
  1. CBCGPGridCheckItem now can print a check mark.
  2. Fixed painting of the right side of the grid header.
  3. Fix in CBCGPGridCtrl::OnLButtonUp for disabled grid items.
  4. Fixed a problem with drawing rotated texts using CBCGPGraphicsManagerGDI.
  5. Fixed problem with drawing dates with year less than 1900 in CBCGPDateTimeCtrl and CBCGPCalendar under VS 2005 and higher.
  6. Fixed some problems in Chart Control.

Version 15.0. Released 12/20/2010
New features
  1. New Chart Control (see screenshot) - the most advanced and professional chart on the MFC market today! This chart control offers a wide range of the different chart types:
    • Line
    • Area
    • Bar and Column
    • Pie
    • Pyramid
    • Funnel
    • and lot of others!
       

    Please browse our Feature Tour for the full list of the chart features and take a look at the new example BCGPChartExample to see the Chart in action.

  2. New Gauge Controls (see screenshot). The library implements various types of gauges that help a developer to create high-quality, fast and beauty digital dashboards. The following gauge types are implemented:
    • Circular Gauges.
    • Numeric Indicators.
    • Color Indicators.
    • Text Labels.
    • Image Indicators

    Please browse our Feature Tour for the full list of gauge features and take a look at the new example BCGPGaugesDemo to see the gauges in action.

  3. Added D2D support. A new class 'CBCGPGraphicsManagerD2D' implements D2D backend. It exposes various methods for easy access to D2D and DirectWrite interfaces. All graphics primitives like lines, rectangles, ellipses, geometries, arcs, pies, pyramids and texts can be easily drawn with D2D speed and quality using just few lines of code. Also we added a new class 'CBCGPGraphicsManagerGDI', which can be used on OSs that do not support D2D (for example, Windows XP or Windows 2000). The base class CBCGPGraphicsManager automatically creates GDI manager if it detects an older OS (where D2D is not supported).
     
  4. New Editor language schemes (see screenshot). Outline parser customization was extended. Added new Lexeme::m_dwData, BlockType::m_dwData members. Extended LexemType enumerator.
    BCGPVisualStudioGUIDemo example demonstrates how to implement the following schemes using new mechanism:
    • C++
    • HTML
    • BASIC
    • Pascal
    • C#
    • Assembler
    • XML
    • SQL
       
  5. Added description to CBCGPButton (see screenshot): CBCGPButton::SetDescription/ CBCGPButton::GetDescription methods have been added.
     
  6. Grid changes:
    • The class CBCGPGridItemID has new state {m_nRow = -2, m_nColumn = -2} which indicates the selection of the whole content. New methods: CBCGPGridItemID::SetAll, CBCGPGridItemID::IsAll. CBCGPGridItemID::IsNull was modified.
    • CBCGPGridItem::Init and CBCGPGridItem::SetFlags are now virtual.
    • Added CBCGPGridCtrl::IsColumnBeingResized function.
    • Added option to disable quick sorting. To return to the previous ("bubble") sorting implementation please use new CBCGPGridCtrl::m_bUseQuickSort member.
    • Added CBCGPGridCtrl::NormalizeSelectionList, CBCGPGridCtrl::RemoveSelectedRows, CBCGPGridCtrl::Delete, CBCGPGridCtrl::IsDeleteEnabled functions.
    • Added mechanism to customize colors alternating. Please override virtual BOOL OnAlternateColor (const CBCGPGridItemID& id) to specify if an item has odd or even color.
    • Improved performance of the grid with many columns. Changed implementation of CBCGPGridColumnsInfo class, changed the internal column's container.
       
  7. Changes in Examples and Samples:
    • Added a new example BCGPChartExample that demonstrates Chart features.
    • Added a new example BCGPGaugesDemo that demonstrates Gauges features.
    • BCGPGridExample has been updated to illustrate how to create a Chart within a merged cell.
Fixes:
  1. CBCGPDateTimeCtrl doesn't show drop-down calendar if control is disabled.
  2. CBCGPGridCtrl: fixed some problems with mouse wheel.
  3. CBCGPGridCtrl: Changed implementation of the "merged cells" feature.
  4. CBCGPGridCtrl: fixed print pagination bug, the bug appeared if a column width was larger than a print page.
  5. Fixed CBCGPEditCtrl::LoadXMLSettingsFromBuffer. "EscapeSequences" tag of XML-settings file works now. "Start" and "End" tags can contain delimiters now.
     
Version 12.0. Released 04/14/2010
New features
  1. The product is fully compatible with Visual Studio 2010.
     
  2. Added a new class CBCGPVisualManagerVS2010, which implements Microsoft Visual Studio 2010 look (see screenshot). In addition, a new class CBCGPVisualManagerVS2010 (Visual Studio 2008 only) implements Visual Studio 2008 look. You can run BCGPVisualStudioGUIDemo example to examine this new fresh look!
     
  3. Implemented Resizable Dialogs support (see screenshot1 and screenshot2):
    • Added 2 new classes:
      1. CBCGPControlsLayout: implements the base class for all layout managers.
      2. CBCGPStaticLayout: implements "static" layout management based on anchors.
         
    • To enable layout support, you've to call EnableLayout/GetLayout methods in the following classes:
      1. CBCGPDialog
      2. CBCGPDialogBar
      3. CBCGPropertyPage
      4. CBCGPFormView
         

    Please run ResizableForm new sample to see this feature in action. In addition, you can see this feature in the following examples and samples:

    1. BCGPOrganizer: resizable dialog bar.
    2. ToolBoxDemo: resizable form
       
  4. Added Vista-style Breadcrumb control (see screenshot). Please take a look at new sample BreadcrumbDemo and BCGPMediaPlayer example to see this control in action and learn how to add it to your application. New classes CBCGPBreadcrumb and CBCGPShellBreadcrumb implement this control. The following new methods have been added to CBCGPVisualManager class:
    1. BreadcrumbFillBackground
    2. BreadcrumbDrawItemBackground
    3. BreadcrumbDrawItem
    4. BreadcrumbDrawArrowBackground
    5. BreadcrumbDrawArrow
    6. BreadcrumbDrawLeftArrowBackground
    7. BreadcrumbDrawLeftArrow
     
  5. Calculator control has been significantly improved:
    1. All calculator buttons are drawn using built-in bitmaps and use visual manager appearance (see screenshot).
    2. Implemented extended commands. Using a new method CBCGPCalculator::SetExtendedCommands developers can add a lot of build-in calculator commands such as idCommandAdvSin, idCommandAdvCos, idCommandAdvTan and others.
       

    Please take a look at CalculatorDemo and SkinnedDialog samples to see these new features in action.

  6. CBCGPPropertySheet has a new mode: PropSheetLook_AeroWizard (see screenshot). In general, this mode has been designed and implemented for Vista/Windows 7 Aero, but you can use it in any OSs/modes (see screenshot). The glass (aero) area can be combined with a page header - we've added a new optional parameter 'bDrawHeaderOnAeroCaption' to EnablePageHeader method. Please take a look at PropSheetDemo sample to see this mode.
     
  7. Grid and Report controls changes:
    1. Added option to select items by clicks on grid header: New header flag BCGP_GRID_HEADER_SELECT.
       
    2. Improved grid printing support. The following new classes were added:
      • CBCGPGridPage class: this class is used by the grid control to store print pages. A print page specifies which area of the grid is printed at the specified page. The grid counts in items in vertical direction. The grid counts in pixels in horizontal direction.
         
      • CBCGPGridPageInfo class: This class is used by the grid control to store information about the printing range and the currently printing page. It is stored in CBCGPGridCtrl::m_PrintParams::m_pageInfo member and in CPrintInfo::m_lpUserData member of the CPrintInfo object used while printing at the current print session.
         
    3. Added an option to deselect items. To deselect an item please use SetCurSel with SM_INVERT_SEL flag. New functions were added:
      • CBCGPGridCtrl::EnableInvertSelOnCtrl
      • CBCGPGridCtrl::IsInvertSelOnCtrlEnabled
         
    4. Changes in header click events: New BCGM_GRID_COLUMN_CLICK message. Added CBCGPGridCtrl::OnHeaderColumnRClick. Modified CBCGPGridCtrl::OnHeaderColumnClick.
       
    5. Items align support: New CBCGPGridItem::GetAlign function. Item's alignment is specified by CBCGPGridCtrl::SetColumnAlign.
       
    6. Grid horizontal pagination support. Added CBCGPGridPage::m_nWidth - page width, CBCGPGridPageInfo::m_nPageWidth - width of currently printed page. See CBCGPGridPage class, CBCGPGridPageInfo class.
       
    7. Drag-and-Drop support (see new "Drag and Drop" tab in BCGPGridExample sample):
      • New message BCGM_GRID_BEGINDRAG.
      • Added methods EnableDragSelection, IsDragSelectionEnabled, EnableDragSelectionBorder, IsDragSelectionBorderEnabled, StartDragItems and HitTestSelectionBorder.
         
    8. Extended in-place edit customization support (see new "Easy Input" tab in BCGPGridExample sample):
      • New messages BCGM_GRID_ITEM_BEGININPLACEEDIT, BCGM_GRID_ITEM_ENDINPLACEEDIT.
      • New functions OnBeginInplaceEdit, OnEndInplaceEdit, CanBeginInplaceEditOnChar, CanEndInplaceEditOnChar, OnInplaceEditKeyDown, OnInplaceEditSetSel.
      • New BCGPGRID_ITEM_INFO::dwResultCode member. See BCGPGRID_ITEM_INFO struct.
      • New method SetClearInplaceEditOnEnter. Call SetClearInplaceEditOnEnter (FALSE) to disable grid from clearing content of the item on Enter.
         
    9. Added CBCGPGridCtrl::GoToNextItem method.
    10. CBCGPGridCtrl::EnsureVisible is now virtual.
    11. Added navigation by TAB (Shift+TAB) key.
    12. Added "Ctrl+Z" (Undo) handler for in-place edit of the grid item.
    13. Changes in CBCGPGridCtrl::SetCurSel for SM_SET_ACTIVE_ITEM style.
    14. Grid item with combo-box now supports F4 to open drop-down list.
    15. CBCGPGridItem has a new virtual method: NewInPlaceEdit. Override this method if you need to create your own in-place edit control.
    16. Added new protected function OnGetColumnAutoSize. It allows to customize the column auto-size feature in the CBCGPGridCtrl-derived class.
       
  8. Editor enhancements:
    1. CBCGPEditCtrl::ExportBuffer has a new optional parameter 'BOOL bForceAnsi'. Setting it to TRUE forces exporting editor's text in ANSI format.
    2. Added new function GetCurLine (CString& strLine).
    3. Added new member m_bEnableCurrentLineCopy. Setting this flag to TRUE allows to copy the current line to the clipboard if there is no selection. It works similar to m_bEnableWholeTextCopy.
       
  9. Gantt chart enhancements:
    1. CBCGPGanttView: new virtual methods 'OnCreateChart' and 'OnCreateGrid' have been added. Override these methods if you wish to create your own Gantt view panes.
       
    2. Added new registered messages:
      1. BCGM_GANTT_CONTROL_CREATE_CHART: allows using custom chart control. Sent when the Gantt control creates a chart.
      2. BCGM_GANTT_CONTROL_CREATE_GRID:  allows using custom grid control. Sent when the Gantt control creates a grid.
         
    3. New virtual method CBCGPGanttChart::QueryRenderer allows to override the Gantt rendering.
       
  10. Skinned dialogs enhancements and improvements:
    1. Improved appearance of disabled CBCGPStatic control.
    2. CBCGPStatic has a new member: m_clrText. You can set this member to colorize text labels (see SkinnedDialog sample).
    3. Multi-line text is vertically centered now in CBCGPButton control.
    4. Radio button is correctly painted now when BS_AUTO3STATE is not defined.
    5. CBCGPComboBox doesn't "eat" CBN_CLOSEUP and CBN_DROPDOWN notifications: ON_CONTROL_REFLECT_EX is used instead of ON_CONTROL_REFLECT now.
    6. Added support for drawing CBCGPComboBox control with CBS_SIMPLE style.
    7. CBCGPPropertySheet adjusts correctly the window size when the property sheet header is enabled.
    8. Added support for PSM_SETWIZBUTTONS and PSM_SETFINISHTEXT messages in CBCGPPropertySheet
    9. The method 'EnableVisualManagerStyle' (in CBCGPFormView, CBCGPDialog, CBCGPDialogBar and CBCGPPropertyPage classes) has a new optional parameter: plstNonSubclassedItems - the list of IDs that shouldn't be automatically subclassed.
    10. DS_CONTEXTHELP style is not used now in CBCGPropertySheet window.
    11. The check box height is calculated correctly now when CBCGPButton is created in High DPI mode.
       
  11. Added CBCGPCalendarBar::GetState method - returns the calendar style flags specified in SetState method.
     
  12. CBCGPProgressDlg::StepIt has a new, optional parameter 'bWaitForMessages'. Set this parameter to FALSE in order to prevent unnecessary message waiting.
     
  13. Changes in examples and samples:
    • BCGPGridExample: added new visual managers and 2 new tabs: "Drag and Drop" and "Easy Input"
    • BCGPVisualStudioGUIDemo: demonstrates new visual managers: VS 2008 and VS 2010
    • PropSheetDemo: added Aero Wizard demonstration.
    • ResizableForm: new sample, demonstrates how to use a new layout manager along with dialogs, dialog bars, property sheets and form views.
    • SkinnedDialog: added edit box with calculator and text labels with a custom colors.
    • BreadcrumbDemo: new sample, demonstrates breadcrumb navigation control.
       
Fixes:
  1. CBCGPGroup properly handles WM_SETTEXT message now.
  2. CBCGPCalendar always closes dropped-down month picker when the calendar is being destroyed.
  3. Fixed problem with text alignment in grid columns. CBCGPGridCtrl::SetColumnAlign is working properly now.
  4. Fixed problem with scrolling CBCGPCalendar and CBCGPDateTimeCtrl dates outside the allowed year range (between 100 and 9999).
  5. Fixed bug with using different horizontal color and vertical color for the grid lines. The m_clrVertLine setting did not work when m_bGridItemBorders flag was switched on.
  6. Fixed problem with clicking on CBCGPGridURLItem in read-write mode.
  7. Fixed a bug with automatic sizing of grid columns. The bug appeared when auto-sizing was enabled with EnableColumnAutoSize(TRUE).
  8. Fixed bug with "Ctrl+A" for in-place editing of grid items. "Ctrl+A" selects all text inside in-place editor during in-place editing, instead of the entire grid as before.
  9. Fixed memory leak in CBCGPGridCtrl::CopyHtmlToClipboardInternal.
  10. Fixed some drawing problems in CBCGPButton: when check box has BS_TOP or BS_BOTTOM style, the text is correctly positioned now.
     
Version 10.21. Released 10/28/2008
New features
  1. The product is adapted for Visual Studio 2008 Service Pack 1.
     
  2. A new class 'CBCGPMessageBox' has been added. This class enhances the standard Windows Message Box component (see screenshot). The following features are provided out of the box:
    • Office 2003/2007 look
    • Custom look
    • Custom icons and buttons
    • Check box control
    • Left and right text alignment
       

    Please take a look at the new MessageBoxDemo sample to see this class in action.

  3. Implemented a lot of improvements and fixes in the Grid control:
    • Added Left Header (see screenshot). You can use this column to display either currently selected row or row numbers. Please call a new method 'EnableRowHeader' to enable/disable this column and 'EnableLineNumbers' to show/hide the row numbers.
       
    • Copy to HTML support (see screenshot). The grid control allows to export selection or the whole content to the clipboard in "HTML Format". Please see BCGPGridExample sample. New CBCGPGridCtrl::Copy function has been added.
       
    • CBCGPGridCtrl::SetCurSel method is virtual now.
       
    • Added functions to work with selection: SelectRow, SelectAll, IsAllSelected, GetSelectionCount.
       
    • Added CBCGPGridCtrl::InsertRowBefore.
       
    • Added CBCGPGridCtrl::OnGetColumnMinWidth to specify the minimal width of the column
       
    • Added "frozen" columns support. The following new methods have been added to the grid control:
      • FreezeColumns: This function enables the "frozen column" feature, which allows to keep columns visible while the rest of columns are scrolled horizontally.
      • UnfreezeColumns: disables the "frozen columns" feature.
     
  4. Added read-only mode to CBCGPGanttControl: use a new method SetReadOnly to enable/disable this mode and IsReadOnly to whether a Gantt control is in read-only mode.
     
  5. CBCGPDialog::SetBackgroundImage supports PNG images now.
     
  6. CBCGPPropertySheet has a new mode now: PropSheetLook_Wizard (see screenshot).
     
  7. CBCGPPropertySheet tree mode has a new look (see screenshot): the left-side tree control displays lines, and tree nodes are not "auto-collapsed" now. If you wish to keep the former look, please set the static variable CBCGPPropertySheet::m_bUseOldLookInTreeMode to TRUE.
     
  8. Added support for Help ("?") caption button in the skinned dialogs and property sheets.
     
  9. CBCGPPropertySheet::EnableVisualManagerStyle and CBCGPDialog::EnableVisualManagerStyle have a new, optional parameter 'bNCArea'. Pass 'TRUE' if you wish to display your dialog or property sheet with skinned borders and caption (see screenshot).
     
Fixes:
  1. Fixed a lot of bugs in the skinned controls and dialogs:
    1. CBCGPStatic redraws itself when control is being enabled/disabled
    2. CBCGPGroup handles WM_UPDATEUISTATE message. This fixes some redrawing bugs.
    3. CBCGPButton: fixed some drawing bugs in check box and radio button modes.
    4. CBCGPDialog and CBCGPPropertySheet handle WM_SETTEXT message and redraws the dialog caption now.
    5. CBCGPPropertySheet adjusts the property sheet buttons when "Apply" button is clicked.
    6. CBCGPEdit::OnNcPaint draws the control border only if control has 'WS_BORDER' style.
    7. The skinned caption height is calculated correctly now in CBCGPDialog and CBCGPPropertySheet. If the window has 'WS_EX_TOOLWINDOW' style, the caption height is calculated properly now.
    8. CBCGPButton supports 3-state check boxes now.
    9. CBCGPButton allows to subclass multi-line and right/center aligned check boxes and radio buttons.
    10. The dialog group box is painted correctly now when the group caption is empty.
       
  2. Tooltip position for CBCGPGridColorItem is calculated properly now.
  3. Fixed bug with tabs and indenting in the editor, fix in CBCGPEditCtrl::InsertTab.
  4. Mouse double click to select one word in the editor works properly now.
  5. CBCGPEdit doesn't "eat" EN_CHANGE notification.
  6. Fixed some visual bugs with drawing connectors in Gantt control.
  7. Improved performance of the Gantt storage: a developer can load a large amount of items.
  8. CBCGPGridCtrl: fixed bug with assertion failed in debug when only one column is visible.
  9. CBCGPEditCtrl: Fixed bug in GetLine: the previous version truncated the last character in line.