概述 MFC已经有十几年的历史了,然而直到今天,他仍然是Visual C++的要害组成部分。从1996年的Visual C++ 4.2至今将近8年的时间,MFC的主体特征没有出现明显的变化,依旧是“古老”的面孔,因此关于这个类库的种种评论自然是情理之中的事情了。从我个人的观点上看,MFC功能依旧健壮、强大,而且是业界少有的、稳定的、经过足够长历史考验的开发框架。深入研究这个类库,你会找到酒越酿越醇的感觉。MFC的一个成功因素之一就是提供了一套完整的Document/View框架,然而这一点也是许多针对MFC批评的矛头指向。也许是由于这个框架太经典,使人们看上去MFC不再“婷婷玉立”,而是“人老珠黄”,以至于打开今天的Visual Studio IDE的时候,多少会有点不协调的感觉:比起其它基于.NET框架的开发语言,用MFC开发会显得很“土气”、“孤独”——没有RAD机制,明显的缺乏与其它时髦对象的“互操作”能力,而且严格恪守自己的领地。每当生成一个基于文档的MFC程序,我们总是看到一张沧桑的面孔,似乎刘姥姥进入大观园,与四周时髦的C#、VB.NET等存在明显的“代沟”与“不相容”。曾经有很多人问我MFC还有前途吗?是否已经行将就木?关于是MFC还是.NET的讨论时隐时现,不绝于耳。CLR是个布满魅力的世界,这种魅力,使得C#、VB.NET等变得光彩夺目。然而,MFC并没有衰老,假如你深入的了解MFC,你会发现,MFC完全可以与C#、VB.NET争奇斗艳……
把握了上述的基本托管类和对象在传统MFC项目中的对偶使用方法,就可以保证您充分使用.NET框架所提供的丰富的类库支持(引用相关的动态链接库并声明名称空间是必要的)。假如希望更多地了解托管和非托管C++代码混用的技术,可以参考Tom Archer与Nishant Sivakumar合著的《Extending MFC applications with the .NET Framework》一书,相信会很有帮助。
到目前为止,我们已经可以在原生MFC项目中成功插入.NET控件。然而,因为上面的.NET控件的插入是纯手工方式的,不直观且很难驾驭,一个聪明的办法是实现一个集成在Visual Studio .NET IDE中的Wizard,以使得MFC工程中可以直接使用可视设计器,在随机光盘中,我们提供了相关的Wizard,安装后您就可以直接在MFC项目中插入并可视化设计.NET用户控件了。
经典优雅与现代风流的完美结合 MFC曾经依靠其与Win32的良好的耦合性在Windows开发方面独领风骚。然而,时过境迁,在.NET大行其道尽显风流的今天,MFC的世界似乎已经感到风雨飘摇了。不容否认,十几年的积累,已经使得MFC的世界有了相当的厚度,因此,MFC过时之说还言之过早,Visual Studio 2005之后,Microsoft依然在后续的Visual Studio中给MFC留下了位置。.NET环境,给Windows程序开发带来了许多新鲜的感觉,例如多语言的交叉继续、一致的Form设计等等。曾几何时,这些新鲜事物看上去都是与MFC不相关的,现在你可以自豪地说,在MFC的世界里,你可以拥有所有这一切!你可以充分运用已有的MFC经验积累去驾驭今天的新鲜事物。当所有的新鲜感觉消失之后,你会发现,经典的总是最好的,只要这种经典的感觉可以进一步延续。假如你希望左手托起传统Windows开发世界而右手紧握托管的.NET世界,那么,我们向你推荐MFC,因为MFC可以整合经典的优雅与现代的风流。通过集成.NET机制,经典MFC设计哲学融入了新的活力,因此打开了一扇门,对传统的MFC开发人员来说孤独已经不存在,完全可以与C#、VB.NET等争奇斗艳了。然而,当MFC具备同C#、VB.NET等一样的RAD机制的时候,面对C#、VB.NET这些新贵们,MFC自然的传统优势就会充分的得以体现,这种优势是内蕴的,C#、VB.NET们无法效仿。