MFC: Microsoft Foundation Class,微软公司为方便程序员在Windows平台上用C/C++开发应用程序设计的一套应用程序框架。
有人说现在C/C++已经没落了,在不久的将来终将退化到现在汇编语言(Assembly)的地位,基于C++的MFC自然也不能避免被淘汰的命运。我不否认C++/MFC面对最新的基于动态语言的Web应用显得是多么的力不从心,也不否认大红大紫的Java、Perl、C#等后辈抢夺了MFC无数的风头,但是无论是出于对曾经在Win32历史上扮演过至关重要的角色的颇具神秘色彩的MFC的仰慕,还是出于希望深入理解编程语言与操作系统的交互关系的目的,抑或是为了能更有效的编写Win32应用程序,研究MFC内部运行机理都是必要的。
基于这样的目的,我开始了阅读侯俊杰先生所著的《深入浅出MFC第二版》(英文名Dissecting MFC 2nd)之旅。一个多月断断续续的研读,在合上此书最后一页的时候,竟然也有一种豁然开朗的感觉。以前也看过一本介绍MFC程序设计的书籍,不过多是以例子为主,尽管有能力编写图形界面了,不过却是知其然不知其所以然——对于通过VC向导生成的代码有好多不明所以的地方,所幸MFC的使用者只需要按部就班地修改指定的函数体就行了,其余的交给IDE(Integrated Development Environment 集成开发环境)好了——此所谓第一种层次吧。
不过VC++相比其它的RAD(Rapid Application Development 快速应用程序开发)工具(如VB)却是有着本质的不同。在VC++中,虽然使用者可以同VB一样通过IDE完成大部分的工作,但是VC++并不掩饰反应程序运行机理的代码;而在VB中程序员能看到的只有自己添加的代码。很难说那种方式一定最好吧,毕竟各有各的用户群。VB针对入门级的程序员,以简单快速的开发方式吸引大家上手;VC++则面向系统级的程序员,提供高率的编译代码以及访问底层系统属性的能力。透过VC++暴露给程序员的代码,侯俊杰先生引领读者将MFC的各项重要机制一一“剖膛破肚”。令我大开眼界的是MFC的框架竟然能在编译器不提供RTTI(运行时类型信息)支持的情况下,完成了该框架所必须的RTTI功能。MFC将Macro(宏、巨集)的功能简直发挥到了极致。尽管相较于Java、C#等面向对象领域的后起之秀来说,MFC的宏确实显得有些笨拙和缺乏可读性,但是在当时的环境之下,通过宏来实现却不得不说是一种优雅。
剖析MFC让我领略到一个应用程序框架的结构,能被成为框架而不是仅仅是类库的东西,关键在于类与类之间绝不是简单独立的关系。在框架中,类和类必须通力协作才能完成所需的功能。也就是说,我们在使用框架的时候绝对不可以像使用类库一样随心所欲——这是当然的咯,要得到框架的服务,自然要遵循人家的游戏规则。这就是很多习惯了字符环境下编程的C程序员过渡到 MFC框架下一时间难以适应的原因。我不是那种在理解了原理之后就忘记当初初试MFC的痛苦经历的人,也许正是通过不断的挫折和积累,让我在阅读《深入浅出MFC》时不断能从以前的实践中找到书中所述要点的印证,不时地得到新的理解和启示,同时也鼓励我继续地把这本书好好的研读下去。
如果必须要为C程序员做一个关于应用程序框架的恰当的比喻的话,我想可以把这个框架理解成main函数中传入命令行参数的机制:为了从命令行中获取信息,你需要定义argc, argv两个参数,OS会自动帮你填入值;同样的道理,为了捕捉鼠标事件、按钮的点击事件并设置相关函数进行处理,你自然不能越MFC的规矩办事咯。希望这个有些简陋的比喻能对挣扎在MFC一线的苦手有所帮助和启示吧。
也来谈谈MFC
对“也来谈谈MFC”的回应
《深入浅出 MFC 第二版》热门书评
-
也来谈谈MFC
30有用 2无用 Sonic 2007-04-29
MFC: Microsoft Foundation Class,微软公司为方便程序员在Windows平台上用C/C++开发应用程序设计的一套应用程序框架。有人说现在C/C++已经没落了,在不久的将来终将退化到现在汇编语言(Assembly)的地位,基于C++的MFC自然也不能避免被淘汰的命运。我不否...
-
这本书让我想起了往事...
10有用 4无用 Baye Wayly 2009-12-26
突然又看到了这本书,突然想起来了很久前的事...第一次读这本书是在高中,自己下的电子书后转换txt 格式,然后写个小程序分成若干段,copy 到MP4上在自习时放到桌洞里偷偷的看,有好几次都差点被班主任收走...记得当时还下过编程思想,STL 之类的东西, 大家都知道高中时紧张的气氛吧:在教室里窗户...
-
深入浅出者,侯捷也
9有用 0无用 [已注销] 2012-08-26
形而上者谓之道,形而下者谓之器。这本书我认为达到“道”的境界了,把MFC六大技术分析的透透彻彻,我花了一个来星期一气呵成读完了,收获颇丰,让我这个暑假更加充实!语言通俗,而且非常幽默,侯捷老师绝对称得上华人IT作家里的巨擘!他翻译的书也特别好,我都在看!有人说MFC过时了,学这个浪费时间,没用。对这...
-
这本书的价值及影响力大于它本身所包含的知识量。
7有用 1无用 肖 2006-03-08
为什么能这么说呢,因为它的出现奠定了侯捷先生在中国大陆程序员的影响力。反过来说,把侯捷先生更多的优点也“掩盖”了。好像后来的书再好也没有超过这本书。为什么。因为侯捷所翻译的书高阶的太多了,市场是固定的。但从另一方面可以看出来,就是在大陆,大部分的程序员有跟风情况出现。今天说C++好,那大家都跑去看,...
-
重新认识了Windows编程、C++甚至面向对象
4有用 1无用 Continuity 2011-12-14
这本书很有名,由于惧怕MFC过多的晦涩的宏定义而没有好好看过,由于项目原因必须深入MFC程序设计而不得不抱着电子书开始啃。书没看完,但觉得很有提纲挈领的意思。之前看的书杂七杂八,有介绍系统底层的,也有外国原版的高屋建瓴的,这本书深度刚好合适,且语言通俗精炼流畅,单是阅读书中对于技术历史的描述就可以津...