《深入浅出MFC第2版(PDF格式)》第6章


MFC 的运作机制太让人陌生了。 
目前市面上有不少讲解MFC 程序设计观念的书籍,其中不乏很好的作品,包括Programming 
Windows 95 with MFC (Jeff Prosise 着,Microsoft Press 出版),以及我曾经翻译过的Inside 
Visual C++ 4。0 (David J。Kruglinski 着,Microsoft Press 出版)。深入浅出MFC 的宗旨与以 
上二书,以及全世界所有的MFC 或Visual C++ 书籍,都不相同。全世界(呵,我的确敢 
这么说)所有与MFC 相关的书籍的重点,都放在如何使用各式各样的MFC 类别上,并供 
应各式各样的应用实例,我却意不在此。我希望提供的是对MFC 应用程序基本架构的每一 
个技术环节的深入探讨,其中牵扯到MFC 本身的设计原理、对象导向的观念、以及C++ 语 
言的高级议题。有了基础面的全盘掌握,各个MFC 类别之使用对我们而言只不过是手册查 
阅的功夫罢了。 
本书书名已经自我说明了,这是一本既深又浅的书。深与浅是悖离的两条射线,理不应同时 
存在。然而,没有深入如何浅出?不入虎穴焉得虎子? 
唯有把MFC 骨干程序的每一个基础动作弄懂,甚至观察其源代码,才能实实在在掌握MFC 
这一套application framework 的内涵,及其对象导向的精神。我向来服膺一句名言:源代码 
说明一切,所以,我挖MFC 源代码给你看。 
这是我所谓的深入。 
8 
…………………………………………………………Page 31……………………………………………………………
唯有掌握住MFC 的内涵,对于各式各样的MFC 应用才能够如履平地,面对庞大的 
application framework 也才能够胸中自有丘壑。 
这是我所谓的浅出。 
本书分为四大篇。第一篇提出学习MFC 程序设计之前的必要基础,包括Windows 程序的 
基本观念以及C++ 的高阶议题。「学前基础」是相当主观的认定,不过,基于我个人的学习 
经验以及教学经验,我的挑选应该颇具说服力。第二篇介绍Visual C++ 整合环境开发工具。 
本篇只不过是提纲挈领而已,并不企图取代Visual C++ 使用手册。然而对于软件使用的老 
手,此篇或已足以让您掌握Visual C++ 整合环境。工具的使用虽然谈不上学问,但在可视化 
软件开发过程中扮演极重角色,切莫小觑它。 
第三篇介绍application framework 的观念,以及MFC 骨干程序。所谓骨干程序,是指Visual 
C++ 的工具AppWizard 所产生出来的程序代码。当然,AppWizard 会根据你的选项做出不同 
的程序代码,我所据以解说的,是大众化选项下的产品。 
第四篇以微软公司附于Visual C++ 光盘片上的一个范例程序Scribble 为主轴,一步一步加 
上新的功能。并在其间深入介绍Runtime Type Information (RTTI )、Dynamic Creation 、 
Persistence (Serialization)、Message Mapping、mand Routing 等核心技术。这些技术正 
是其它书籍最缺乏的部份。此篇之最后数章则脱离Scribble 程序,另成一格。 
9 
…………………………………………………………Page 32……………………………………………………………
本书前身,1994/08 出版的Visual C++ 对象导向MFC 程序设计基础篇以及1995/04 年 
出版的应用篇篇,序言之中我曾经这么说,全世界没有任何书籍文章,能够把MFC 谈得这么 
深,又表现得这么浅。这些话已有一半成为昨日黄花:Microsoft Systems Journal 1995/07 的一 
篇由Paul Dilascia 所撰的文章Meandering Through the Maze of MFC Message and mand 
Routing ,以及Addison Wesley 于1996/06 出版的MFC Internals 一书,也有了相当程度的核 
心涉猎,即连前面提及的Programming Windows 95 with MFC 以及Inside Visual C++ 4。0 两本 
书,也都多多少少开始涉及MFC 核心。我有一种「德不孤必有邻」的喜悦。 
为了维护本书更多的唯一性,也由于我自己又钻研获得了新的心得,本书增加了前版未有的 
Runtime Type Information 、Dynamic Creation 等主题,对于Message Mapping 与mand 
Routing 的讨论也更详细得多,填补了上一版的缝隙。更值得一提的是, 我把这些在MFC 中 
极神秘而又极重要的机制,以简化到不能再简化的方式,在DOS 程序中仿真出来,并且补 
充一章专论C++ 的高阶技术。至此,整个MFC 的基础架构已经完全曝露在你的掌握之中, 
再没有任何神秘咒语了。 
本书从MFC 的运用,钻入MFC 的内部运作,进而application framework 的原理,再至物 
件导向的精神,然后回到MFC 的运用。这会是一条迢迢远路吗? 
似远实近! 
许多朋友曾经与我讨论过,对于MFC 这类application framework,应该挖掘其内部机制到什 
么程度?探究源代码,岂不有违「黑盒子」初衷?但是,没有办法,他们也同意,不把那些 
奇奇怪怪的宏和指令搞清楚,只能生产出玩具来。对付MFC 内部机制,态度不必像对付 
MFC 类别一样;你只需好好走过那么一回,有个印象,足矣。至于庞大繁复的整个application 
framework 技术的铺陈串接,不必人人都痛苦一次,我做这么一次也就够了 。 
10 
…………………………………………………………Page 33……………………………………………………………
林语堂先生在朱门一书中说过的一句话,适足作为我写作本书的心境,同时也对我与朋友 
之间的讨论做个总结: 
「只用一样东西,不明白它的道理,实在不高明」。 
祝各位胸中丘壑自成! 
侯俊杰 新竹1996。08。15 
P。S。 愈来愈多的朋友在网络上与我打招呼,闲聊谈心。有医师、盲生、北京的作家、香港的 
读者、从国中到研究所的各级学生。学生的科系范围广到令我惊讶,年龄的范围也大到令我 
惊讶。对于深居简出的作家而言,读者群只是一个想象空间,哦,我真有这么多读者吗?! 呵 
呵,喜欢这种感觉。回信虽然是一种压力,不过这是个甜蜜的负担。 
你们常常感谢我带给你们帮助。你们一定不知道,没有你们细心研读我的心血,并且热心写 
信给我,我无法忍受写作的漫漫孤寂!我可以花三天的时间写一篇序,也可以花一个上午设 
计一张图。是的,我愿意!我对拥有一群可爱可敬的读者感到骄傲。 
11 
…………………………………………………………Page 34……………………………………………………………
12 
…………………………………………………………Page 35……………………………………………………………
目 錄 
目錄 
( 表示本版新增內容) 
*
* 讀者來函 / 1 
* 第版序 / 5 
第版序 / 7 
目錄
小说推荐
返回首页返回目录