Microsoft VS2008 MFC 与 BCGControlBar 的区别


最近很多朋友问Microsoft VS2008中自带的MFC与BCGControlBar MFC有什么区别?

其实我们可以先搞清楚其中的关系,BCGSOFT开发的BCGControlBar MFC组件是全世界最早最成功的MFC组件,正因为此Microsoft 与BCGSOFT在2007年达成战略合作,BCGsoft授权给Microsoft 微软,让VS2008整合了BCGControlBar的部分功能。而现在新的正在出售的BCGControlBar是在BCGControlBar专业版的基础上建立的,Microsoft VS2008中并没有包含这些先进控件的功能,诸如 grid, editor, plannner 等。

下面是一些用户使用VS2008集成的BCGControlBar 后的体会:

1、 集成得非常不完整。BCGControlBar 的大部分组件的最基础的功能都有集成,但是由于只有最主要的功能被集成,就限制了开发者的发挥。比如 Ribbon 界面,表面上看似很具优势,但是真正使用下来你才发现,这个 Ribbon 界面是非常不完整的。Ribbon 的主 Frame 风格在 Vista Aero 之外的场合,是忽略 Windows 主题和传统风格的 Office 2007 窗口边框风格,而这个边框风格是不可控的,除了主 Frame,所有其他窗口都不具备这个风格。想像一个程序,在 Windows XP 里运行的主界面边框像 Office 2007,而除了主界面的其他所有内容都是 Windows XP 的 Luna 风格,那是多么怪异的一种界面。所以 Ribbon 的使用范围就被软性限制在主界面了。但是有多少软件只有主界面,没有对话框(包括除主窗口之外的所有窗口)

2、BCGControlBar 大部分组件只集成了基础功能,显然如果要让我们在整套软件的开发工作得到统一,很多工作就必须在原本这些基础功能上面进行扩展。但是 BCGControlBar 作为一个即成产品直接套用就没有严重的问题,但是当它不完整,很多工作要在原先的组件上扩展的时候,甚至即使是完整的,我们仍然经常会遇到需要在原基础类上面进行扩展的时候,你将发现你正在挑战一项高难度的工作,而且不久之后你会怀疑你的工作并不比微软的集成工作更轻松。
3、 用 ToolBar 做自己工具的容器?没门!
4、 ToolBar Label?没有!
5、ToolBar CheckBox?改用 Ribbon!
6、 CMFCShellTreeCtrl 唯一给你定制的地方是 IShellFolder::EnumObjects 的其中一个参数,这个参数无论怎么组合,都得不到一个和 BrowseForFolder 一样的只有驱动器和文件夹的列表,总是会把 ZIP 文件认为是文件夹,想要在列表中过滤掉不想要的行(比如你不想要列出回收站),唯一的方法是自己完全重写整个 EnumObjects 的调用过程!不过如果自行派生 CMFCShellTreeCtrl,你的程序就有可能无法通过 Link,因为 CShellManager 有个 bug,动态链接 MFC 库使用 CShellManager 会出错。
7、想动态更换工具栏按钮的图标,菜单图标也会自动被更换,菜单和工具栏的图标在一开始可以分别指定不同尺寸,但是动态更换的图标就不能!
8、 想运行时隐藏工具栏的一个按钮,它会记录进注册表,下次程序启动除非你的程序显式的显示这个按钮,否则这个按钮就永远消失,你想找一个暂时性的方法?没有!
9、 看中了 Ribbon 的颜色方案,又喜欢 VS.net 2005 的外观风格,没有任何方式可以组合这两者,唯一可以做得到的就是根据 Ribbon 和 VS.net 2005 的 VisualManauger 那几千行代码,自己重新写一个!
10、 最后值得安慰的好处就是类似 CSettingStore,CDrawingManager 之类的类,还是比较实用的。只是里面我用过的大部分觉得实用的类,我自己已经有过封装,因为也是三两下的简单事情。

由此可以看出,Microsoft VS2008只是集成了BCGControlBar 老版本的部分功能,这与BCGControlBar Library Pro Edition v15 有本质的区别。

详情请见官方说明:http://www.bcgsoft.com/cgi-bin/forum/topic.asp?TOPIC_ID=4476 




注:本文转载自:http://www.evget.com/zh-CN/Info/catalog/15748.html


你可能感兴趣的:(BCGControlBar)