BCGControlBar Professional Edition for MFC是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010/2013 和 Microsoft Visual Studio-like(打印、用户定制工具栏、菜单等)以及其他一些知名产品的高级用户界面,例如:日历、网格、编辑和甘特图等。BCGControlBar的这个扩展库包含了300多个经过精心设计,测试和具有完备文档的MFC扩展类。BCGControlBar控件能轻松的融入应用程序中,节约大量的的开发和调试时间。

新增

1.已实施通知徽章支持(见屏幕截图)。通知标记是靠近控制放置的小尺寸元素,表示与控制相关的一些事件。例如,您可以将带有大量新邮件的数字徽章添加到功能区/工具栏“邮件”按钮或安全警报图标到链接控件。

BCGControlBar Professional Edition for MFC v 29.0_第1张图片

通知徽章已添加到以下控件中:

  • 工具栏/功能区栏/菜单。

  • 功能区后台视图。

  • 按钮。

  • 快捷方式(“Outlook”)栏。

  • 格。

  • 任务窗格。

  • 树控制。

  • 列表框。

请查看新示例NotificationBadgesDemo以查看此功能的实际应用。

2.推出具有以下功能的高级帧标题栏(见屏幕截图):

BCGControlBar Professional Edition for MFC v 29.0_第2张图片

  • 能够添加自定义按钮/控件。由于Frame Caption Bar是从Ribbon Bar派生的,因此您只需添加功能区控件。

  • MDI标签。

  • 能够使用自定义大小和自定义系统菜单指定所有者绘制系统图标。

新的方法被添加到框架类(CBCGPMDIFrameWnd和CBCGPFrameWnd):

  • EnableFrameCaptionBar:启用/禁用标题栏

  • GetFrameCaptionBar:获取指向标题栏的指针

应用程序向导中添加了一个新选项“MDI Tabs on Caption”(参见屏幕截图)。

BCGControlBar Professional Edition for MFC v 29.0_第3张图片

请查看BCGPVisualStudioGUIDemo示例和新演示程序BCGPEdgeDemo和FrameCaptionDemo以查看此新功能的实际应用。此外,我们在MDITabsDemo示例中添加了“标题上的MDI选项卡”模式。

3.功能区栏

  1. CBCGPRibbonBackstagePagePrint:添加了一个新的虚拟方法OnGetPrintView。重写此方法以指定打印预览或打印的视图(默认情况下,正在使用活动视图)。

  2. CBCGPRibbonPaletteButton :: SelectItem具有新的可选参数:bEnsureVisible - 使所选项目可见并且bNotifyOther - 将当前选择与具有相同ID的其他控件同步。

  3. CBCGPRibbonPaletteButton:在此类中添加了一个新方法'EnsureVisible'。

  4. 新类CBCGPRibbonFrameCaptionBar实现了高级应用程序框架标题栏。

  5. 新类CBCGPRibbonCaptionMDITabs实现位于高级应用程序框架标题栏(CBCGPRibbonFrameCaptionBar)上的MDI选项卡。

4.对话和表格

BCGControlBar Professional Edition for MFC v 29.0_第4张图片

  1. CBCGPStaticLayout:添加了对控件组的支持。新方法AddGroupAnchor允许为位于特定组中的所有控件应用相同的布局。

  2. CBCGPPropertySheet:添加了数字通知徽章支持(见截图)。 CBCGPPropertyPage类中添加了新方法:

    • SetNumericNotificationBadge。

    • ClearNumericNotificationBadge。
      请查看PropSheetDemo示例(左侧列表)以查看此新功能的实际应用。

  3. CBCGPMessageBox具有以下新功能和改进(见屏幕截图):

    BCGControlBar Professional Edition for MFC v 29.0_第5张图片

    • 您可以创建任何CWnd派生的自定义控件来代替默认文本框:重写GetTextBoxSize方法以指定控件大小,使用CreateTextBox方法创建控件。

    • 自定义图像支持:覆盖GetIconSize方法以指定图像大小,使用OnDrawIcon来绘制自定义图像。
      请查看MessageBoxDemo示例以查看这些功能的实际应用。

  4. 新类CBCGPMessageLightBox以灯箱样式实现消息框(参见屏幕截图)。请查看LightBoxDemo示例以查看此新功能的实际应用。

BCGControlBar Professional Edition for MFC v 29.0_第6张图片

5.MDI Windows和选项卡

  1. 新的虚方法CBCGPMDIFrameWnd :: OnGetMDITabCustomToolTip允许指定MDI选项卡自定义工具提示。

  2. 改进的MDI选项卡动画(“忙”指示符)支持:

    • 新方法CBCGPMDIFrameWnd :: SetMDITabStateAnimationImages指定MDI选项卡状态动画帧列表。

    • 新方法CBCGPMDIChildWnd :: StartMDITabStateAnimation和CBCGPMDIChildWnd :: StopMDITabStateAnimation允许启动/停止MDI选项卡状态动画。

    • CBCGPMDIChildWnd :: IsMDITabStateAnimation告知MDI选项卡动画是否已启动。

  3. 当用户单击位于MDI选项卡上的“新建”按钮时,框架将调用新的虚拟方法CBCGPMDIFrameWnd :: OnClickMDINewTab。默认情况下,在当前活动的MDI框架中创建新文档。

  4. 现在,在活动的撕下框架(如果有)中自动创建新文档。如果由于某种原因您想要禁用此功能并始终在主应用程序框架中创建一个新文档(就像在以前的产品版本中一样),请在CBCGPMDIChildWnd派生类(通常是CChildFrame)构造函数中设置m_bCreateNewFrameInActiveTearOffFrame = FALSE。

6.图表控制

  1. CBCGPChartView :: EnableAdvancedLegend有一个新的可选参数'bPrint'。如果要打印高级图表图例对象,请将其设置为TRUE。

  2. CBCGPChartSurfaceSeries有一个新方法SetHitTestTolerance。如果使用不同于0的dblHitTolerance调用此方法(例如5),则命中测试将返回顶点而不是平面。

7.仪表控制

BCGControlBar Professional Edition for MFC v 29.0_第7张图片

BCGControlBar Professional Edition for MFC v 29.0_第8张图片

  1. 循环进度指示器:添加了新的BCGPCircularProgressIndicator_Dots样式(见截图)。此样式只能在无限模式下指定。

  2. CBCGPNumericIndicatorImpl:添加了数字格式支持(见截图):

    • BCGP_NUMERIC_INDICATOR_FORMAT_STANDARD - 标准格式(默认)。

    • BCGP_NUMERIC_INDICATOR_FORMAT_SCIENTIFIC - 科学格式。

    • BCGP_NUMERIC_INDICATOR_FORMAT_HEX - HEX格式(仅限32位整数)。
      调用新方法CBCGPNumericIndicatorImpl :: SetFormat以指定数字格式。 BCGPGaugesDemo示例说明此新功能。

8.可视容器和可视设计器

  1. 新方法CBCGPGlobalUtils :: ScaleByDPI(CBCGPVisualContainer&container)根据当前DPI缩放所有容器元素。

  2. CBCGPBaseVisualObject:新的虚方法GetHitTestTolerance允许指定命中测试的容差。

9.视觉管理器和主题

BCGControlBar Professional Edition for MFC v 29.0_第9张图片

BCGControlBar Professional Edition for MFC v 29.0_第10张图片

  1. CBCGPTasksPane:Windows 8/10下Windows Native主题的改进外观(见截图)。

  2. VS 2012/2013/2017和Office 2013/2016 Visual Managers:添加了对轻量级自定义和沉浸式(由Windows 10设置指定)强调颜色的支持(请参见屏幕截图)。请查看BCGPMSOfficeDemo和BCGPVisualStudioGUIDemo示例以查看此功能的实际应用。

  3. 向CBCGPVisualManager类添加了新的虚拟方法:

    • GetControlFillColor:返回控件的默认背景颜色。

    • GetControlTextColor:返回控件的默认文本颜色。

    • OnDrawViewBorder:从CView派生类中的WM_NCPAINT消息处理程序调用此方法,以使视图边框与活动主题匹配。

  4. 新的静态方法CBCGPVisualManager :: SetNumericNotificationBadgeDefaultColor允许指定通知徽章的默认背景颜色。

10.网格和报告控件

BCGControlBar Professional Edition for MFC v 29.0_第11张图片

  1. 实施通知徽章(见截图)。添加了新方法CBCGPGridItem :: SetNotificationBadge,CBCGPGridRow :: RemoveAllNotificationBadges,CBCGPGridItem :: OnDrawNotificationBadge和CBCGPGridCtrl :: GetNotificationBadgePadding。请查看BCGPGridExample应用程序(“单元格类型”视图)以查看此新功能的实际应用。

  2. 过滤条外观定制。新的可选参数'color'已添加到CBCGPGridCtrl :: EnableFilterBar方法中。

  3. CBCGPGridCtrl :: GetColumnCount有一个新的可选参数bCalcVisibleOnly。如果需要计算可见列数,请将此参数设置为TRUE。

  4. CBCGPGridCtrl:改进了一些Visual Managers的外观。

  5. 直接从资源添加了加载网格标题/项目图像:将带有'UINT nResID'参数方法的SetHeaderImageList和SetImageList添加到CBCGPGridCtrl类。

  6. 新的虚方法CBCGPGridCtrl :: OnDrawExpandBox允许自定义展开/折叠框外观。

11.控制

BCGControlBar Professional Edition for MFC

BCGControlBar Professional Edition for MFC v 29.0_第12张图片

BCGControlBar Professional Edition for MFC v 29.0_第13张图片

BCGControlBar Professional Edition for MFC v 29.0_第14张图片

BCGControlBar Professional Edition for MFC v 29.0_第15张图片

BCGControlBar Professional Edition for MFC v 29.0_第16张图片

  1. CBCGPButton:添加了数字通知徽章支持(见截图)。 CBCGPButton类增加了新方法:

    • SetNumericNotificationBadge。

    • ClearNumericNotificationBadge。

    • GetNumericNotificationBadge。

    • GetNumericNotificationBadgeColor。

    • OnDrawNotificationBadge。

  2. CBCGPColorButton:一种新方法SetDrawColorInDisabledControl允许在禁用的控件上显示一个颜色框。默认情况下,未启用控件时不显示颜色。

  3. CBCGPColorComboBox:添加了在控件创建之前指定所选项的功能。

  4. CBCGPHotSpotImageCtrl具有以下新功能(见截图):

    • 添加了SVG图像支持:控制图像源现在可以是SVG。此外,您可以通过SVG元素id指定热点区域:添加了新方法AddHotSpot(UINT nID,const CString&strSVGElementID,LPCTSTR lpszToolTip,LPCTSTR lpszToolTipDescription)。

    • 实现了键盘导航和手势事件支持。

    • 添加了MSAA和编码UI测试支持。
      请查看HotSpotDemo示例以查看这些新功能的实际应用。

  5. CBCGPListCtrl:使用视觉主题实现所选项目的绘制(参见屏幕截图)。如果由于某种原因你希望保持旧的外观(默认蓝色背景),请使用bEnable = FALSE调用新方法CBCGPListCtrl :: EnableThemedSelection。

  6. CBCGPListBox:添加了数字通知徽章支持(见截图)。 CBCGPListBox类中添加了新方法:

    • SetItemNotificationBadge

    • RemoveItemNotificationBadge

    • GetItemNotificationBadgeNumber

    • GetItemNotificationBadgeColor
      请查看ListBoxDemo示例以查看此新功能的实际应用。

  7. CBCGPListBox:标题项可以使用与其他(“非标题”)项目相同的字体绘制。要启用此功能,请使用参数bSet = FALSE调用新方法SetCaptionItemsLargeFont。

  8. 新类CBCGPTabCtrl实现了一个标准的Windows选项卡控件(CTabCtrl),支持视觉主题(见截图)。

  9. CBCGPTreeCtrl:添加数字通知徽章支持(见截图)。添加了新方法:

    • SetItemNotificationBadge

    • RemoveItemNotificationBadge

    • RemoveAllNotificationBadges

  10. CBCGPTreeCtrl:实现了对TVS_TRACKSELECT树控件样式的支持。

  11. CBCGPShellList:虚方法OnFormatFileSize已过时,应该用OnFormatStrFileSize替换(一个新方法有ULONGLONG参数而不是long)。

12.图形管理器

  1. 新的编译标志BCGP_EXCLUDE_TEXTURED_BRUSHES允许减少CBCGPBrush大小。如果不使用纹理画笔,请在BCGCBProConfig.h中取消注释此标志。

  2. CBCGPGraphicsManagerGdiPlus:添加了一个新的全局标志m_bLoadImageFromStream。默认情况下,GDI +在从磁盘存储加载图像时锁定文件。要防止这种情况,您需要将此标志设置为TRUE,而将使用加载的内存流。

13.编辑控件

BCGControlBar Professional Edition for MFC v 29.0_第17张图片

  1. 实现了错误指示支持(参见屏幕截图)。一种新的简单灵活的机制允许指定不正确的单词或拼写错误,并在文本下显示红色曲线,并在单词的上下文菜单中显示建议的更正列表。

    • EnableErrorIndication:启用/禁用错误指示。 CBCGPEditCtrl类中添加了以下新方法:

    • IsErrorIndicationEnabled:告知是否启用了错误指示。

    • IsCorrectWord:覆盖此方法以指定特定单词是否不正确。默认情况下,所有单词都被视为正确。

    • GetWordCorrections:覆盖此方法以指定建议的更正列表以及与不正确的单词相关的自定义操作列表。

    • OnWordCorrectionMenuCustomAction:覆盖此方法以对不正确的单词执行自定义操作(例如,将此单词添加到字典中)。

    • GetIncorrectWordToolTip:覆盖此方法以指定在错误单词附近显示的自定义工具提示(例如,将此单词视为不正确或建议操作的原因)。
      请查看BCGPVisualStudioGUIDemo示例以查看此新功能的实际应用。

  2. 在黑暗和高对比度视觉主题下改进侧栏外观。

14.其他

BCGControlBar Professional Edition for MFC

  1. 库源代码现在与英特尔编译器18.0 / 19.0完全兼容。我们已经使用Intel Parallel Studio XE 2018/2019对我们的产品进行了全面测试。

  2. D2D初始化:添加了D2D验证码。如果使用硬件加速的D2D渲染失败,我们将尝试使用软件渲染。如果此类渲染正常,则将使用D2D1_RENDER_TARGET_TYPE_SOFTWARE类型自动创建所有D2D渲染目标。如果软件渲染也失败,默认情况下将使用GDI +图形管理器。此添加解决了客户机器上过时的D2D / DirectX驱动程序的问题。

  3. CBCGPFontSelector在类构造函数中有新的可选参数:

    • clrText:指定文本颜色。

    • bTransparentBkMode:指定背景是否应透明。

  4. CBCGPExplorerToolBar具有以下新功能和改进功能(见屏幕截图):

    • 添加了可选的刷新(重新加载)按钮,可以取消加载过程。 EnableNavigationButtons有2个新的可选参数:nRefreshID和nStopID。

    • 如果未指定历史菜单按钮,则用户可以右键单击后退/前进按钮,将显示具有特定历史记录项的菜单。可以通过调用新方法GetHistoryMenuType来获取历史记录类型(BCGPEXPLORERTOOLBARHISTORY_All,BCGPEXPLORERTOOLBARHISTORY_Prev或BCGPEXPLORERTOOLBARHISTORY_Next)。

    • 改进了导航按钮的外观:现在可以从新的SVG图像加载图标,并在所有DPI模式下进行精确缩放。
      请查看ExplorerBarDemo示例以查看这些新功能的实际应用。

  5. CBCGPScrollView:添加了对手势平移事件的支持。现在可以在启用触摸的设备上轻松滚动窗口。

  6. CBCGPSVGImage:实现了元素过滤方法SetElementsFilter。过滤器包含SVG元素ID列表,并允许执行任何图像编辑操作,例如仅对列表中的元素进行颜色更改。

15.演示和示例

BCGControlBar Professional Edition for MFC v 29.0_第18张图片

BCGControlBar Professional Edition for MFC v 29.0_第19张图片

BCGControlBar Professional Edition for MFC v 29.0_第20张图片

BCGControlBar Professional Edition for MFC v 29.0_第21张图片

  1. BCGPEdgeDemo:演示如何创建MS Edge样式应用程序的新示例(请参见屏幕截图)。

  2. BCGPControls:在按钮演示中添加了数字徽章。

  3. BCGPGaugesDemo:添加了“Dots”循环进度和数字指示器格式演示。

  4. BCGPGridExample:添加了网格单元格数字徽章演示。

  5. BCGPMSOfficeDemo:添加了演示如何添加轻量级自定义强调色的演示。

  6. BCGPOutlookDemo:添加了位于快捷方式栏和文件夹树上的数字标记。

  7. BCGPVisualStudioGUIDemo:在编辑控件中添加了自定义标题栏和错误指示(参见屏幕截图)。

  8. ExplorerBarDemo:添加了新历史模式和刷新/停止按钮的演示。

  9. HotSpotDemo:演示如何创建基于SVG的控件。

  10. LightBoxDemo:添加了BCGPLightMesageBox演示。

  11. ListBoxDemo:添加了数字徽章演示。

  12. MDIEditorDemo:添加了错误指示演示。

  13. MDITabsDemo:添加了“标题上的MDI标签”模式演示。

  14. MessageBoxDemo:添加了自定义(基于窗口控件)文本框和自定义大小图标演示。

  15. PropSheetDemo:添加了页面数字徽章。

  16. ResizableForm:演示如何创建控件组布局。

  17. TabControl:演示新的CBCGPTabCtrl类。

  18. FrameCaptionDemo(参见屏幕截图):一个新示例,演示如何使用自定义控件,系统图标和MDI选项卡创建高级框架标题栏。

  19. NotificationBadgesDemo(参见屏幕截图):一个新示例,演示如何将通知标记添加到不同的控件。

  20. TreeCtrlDemo:演示树项突出显示模式和项目数字徽章。

修复:

  1. 在自定义Windows强调颜色的情况下,在DWM区域上解决了文本颜色问题。

  2. CBCGPBaseTabWnd:解决了使用各种标签长度移动标签的问题。

  3. CBCGPVisualContainer:解决了滚动非水印纹理背景的问题。

  4. CBCGPSliderCtrl:解决了在禁用控件中绘制缩放按钮的问题。

  5. CBCGPTasksPane:解决了在禁用任务上绘制图标的问题。

  6. CBCGPTasksPane:解决了当鼠标光标离开任务窗格时重绘突出显示的任务的问题。

  7. CBCGPBaseVisualCtrl:使用GDI +图形管理器解决了绘图控件的非客户区问题。

  8. 修复了使用任务栏图标从最小化状态恢复窗口的错误。

  9. 解决了使用系统键将最大化帧重新定位到另一个监视器的问题。

  10. CBCGPGridCtrl:解决了CBCGPGridCheckItem中带有文本标签的水平对齐问题。

  11. CBCGPGridCtrl:通过EnsureVisible和EnsureVisibleColumn方法为宽列水平滚动到列的问题。

  12. 图:解决了在扩展过程中在CBCGPDiagramTableShape中绘制连接端口的问题。

  13. 图:修复了图表连接器上鼠标光标的错误。

  14. 图:解决了图表连接器的缩放,绘图和拖动等问题。

  15. 图:连接器现在正确处理BCGP_EDIT_NOSIZE和BCGP_EDIT_NOMOVE编辑标志。