首先说句题外话,虽然我现在的“主业”是Qt,但自己扪心自问,对MFC的熟悉程度要超过Qt。正是由于有了对MFC的熟悉,才能在使用Qt时,比较清醒的认清两者的优劣之处,在此暂且不提。
这个话题也可以说是由来已久,众说纷纭,今时我也谈谈自己的感悟。
一、对MFC的总体看法
首先看看云风在其《游戏之旅-我的编程感悟》一书中对MFC的看法:
“我所见到的程序员中,很多把C++/VC/MFC一锅端,这或许造成了MFC在某一类高手群体中的坏名声。而另一方面,在许多初学编程的人群中,又把MFC看得过于神圣,“会用”MFC,“会用”VC的人变成了高人。还有一些程序员,耐心的学完了C甚至C++,但是却一直不屑于使用MFC写程序,认为微软的那些东西都是垃圾。MFC的结构复杂度让他们不肯像学习C++语言那样细心的学习。
MFC既不是天使,也不是恶魔。MFC是一个框架类库,它所做的不仅仅是封装了Windows API而已,而是引导程序员去使用一些设计模式来编写Windows程序。MFC由于历史原因,携带了许多不那么现代感的C++代码,但是它依旧是一个成功的、完全基于C++语言的框架类库。其设计总的来说是合理的,规模也在容易让程序员接受的范围内,没有仔细研究过MFC的程序员没有资格评论MFC的好坏。
我也同样相信,绝大多数指责MFC的程序员没有能力完成和MFC相当能力的类库。无论MFC的优劣,在Windows下用标准C++写带有Windows GUI的软件,除了MFC还真没有太多的选择ÿ