前段时间随便写了两篇关于 MFC 的文章,讲的都是老东西,看来也没什么人喜欢看,所以我决定以后不写老东西了。可是 MFC 有什么新东西吗?想来想去只有再说说 VC2008 Feature Pack 了。赞美的话我就不说了,网上有很多文章可以 google 得到。 VC team 的人都说这个 feature pack 是 MFC 自 vc6 以来的 major update ,可见它的分量之重。 MSDN 上说,这是 MS 重新重视 native code 的一个标志,只不过之前荒废的时间太长了。这个 pack 的更新在两个方面,一是更加现代的 UI , MFC9.0 库增加了很多新的 UI 类。另一个是 TR1 的实现,这个和 MFC 没有关系。下面我就重点说说这些增加的 UI 类。
先看看 MFC 的类图吧, http://msdn.microsoft.com/en-us/library/bb982033.aspx 。最初看到那些画星星的类之后,我的心里就有了不详的预感。这些类数量很多,而且大部分都以 CMFC 开头,这样起名字在之前的 MFC 类库里是看不到的,难道这些代码不是天生为 MFC 写的?另一点就是很多类从名字上看就非常之细节化,如“ CMFCVisualManagerOffice2007 ”这不太符合 MFC 一直以来的风格。还有一点就是很多 UI 类(如 Button )竟然是从 CObject 派生的。熟悉 MFC 的 TX 都知道这意味着什么。综合这几点,我就感到这 MFC9.0 已经不是一直以来人们熟悉的 MFC 了。看似密密麻麻一大堆类,实际上已不是那么严谨,精悍了,这不是 MFC 一直以来的风格,倒像是一个共享软件者在甩货。
后来查了资料,这些所谓的 Modern UI 全部是来自 BCG Soft ,原来如此。熟悉 MFC 的 TX 可能有很多都有过购买 VC 界面库的经历,在这个“行业”, BCG 和 codejock 这些公司也算是响铛铛的名字。但整件事情最搞笑的就是, MS 推出了 Office2007, VS2005, Outlook, Money 这些软件,他们新潮的界面成为了其它软件模仿的对象,而 BCG 是在这些软件推出后,模仿这些软件的界面而做成的第三方开发类库,现在这些类库居然被 MS 买来用于 MFC ,供其它公司和个人进行软件开发???
在 VC team 的 Blog 中,很多人质疑 BCG 的代码质量,也有很多人质疑为什么 VC team 不用那些 MS 内部用在 Office 等软件上的代码。得到的答复是,使用那些 MS 内部的代码需要 2 年时间(保护?人少?)。看来 MFC 这几年确实是个没人要的孩子。喜欢看代码的 TX ,可以看看 MFC 那些新增的代码,相信你会感到。。。。。。
Anyway, MFC 的使用人员现在可以免费得到一些现代的 UI 解决方案,这也未尝不是一件好事。那些一直在使用 BCG 和 codejock 产品的 TX ,如果不考虑 TR1 的话,就可以不用管这个 feature pack 了。想用的 TX ,记得打上 SP1 。
记得看过 PDC2008 的一些视频,在 VS2010 发布测试版的时候, VC team 的 Boris Jabes 做了一个演讲,名字叫“ Microsoft Visual C++: 10 Is the New 6 ”。看来 MS 也认识到 VC6 是一个一直没有被逾越的产品。VC2010正式的版本会是什么样子,偶们拭目以待。 Damien Watkins 介绍了 MFC10 在 VS2010 中实现的一些新功能。还介绍了 MFC 为 Window7 开发所做的准备。这说明 MFC 在 MS 最新的 Windows7 中开发 native code 软件已经不成问题。那些害怕 MFC 没钱途的 TX ,这下可以放心了。