我另一个号上的文章《<深入浅出MFC>观后有感》

来源:互联网 发布:网络支撑技术 课件 编辑:程序博客网 时间:2024/04/30 02:40
本文原创,如需转载,请注明出处!  最近申请了一个新号,把这篇文章移过来。


《深入浅出MFC》观后有感

陶朱子

     好几年前我曾经买过这本书,知道它是本好书,在匆匆走马观看一遍后,便将它束之高阁,后来有友人借之,不想几经辗转,最终不知我的这本好书花落谁家了。这段时间有空,得知一位友人也买了此书,便借来再读。再读的同时,回想这几年使用MFC的经历,顿觉获益良多,深受启发,遂成此文。       

     翻开此书,到内容简介后面一页,一个红的印章,上书“山高月小 水落石出”。坦言,我在第一次看到这本书时,并不理解此八个字与此书的关系。在读完此书两遍后,才明白此书真的是带我们去高山寻宝,上九天揽月,最终MFC的神奇奥秘在我们面前水落石出。作者简介让我们了解到侯俊杰老师的兴趣、品格和技术人特有的恬静平和的心态。每遇心静浮躁,我便想起侯老师的这几句自我介绍,以为安抚,以为榜样。后面紧接是读者来函、各次印刷的感言和书序,可见此书读者众多,发行量很高,来自各个国家和地区的读者对此书也赞誉颇多,让人一眼就明了这是本不可多得的好书。       

     我觉得本书的第一点亮点是第0章。此章是本书的导读,介绍了适合阅读本书的读者、读者应需要的软硬件条件和本书主要的内容,其中对适合的读者范围,读者应具有何种技术基础描述甚细,不似许多书就是内容简介后面加一句“适于广大大专、本科学生和学习研究MFC的教师、技术人员”之类的话。这样的话太粗略了,一方面没有准确的读者定位,另一方面也好像在说后面的内容是泛泛而谈,是适于任何人的“粗、大、空”而已。所以我认为第0章为本书开了个好头,精彩之至呀。       

     然后是本书的主要内容,分为四篇。从Windows程序设计的基本概念入手,联系C++语言的重要性质在MFC中的应用,不求对MFC面面俱到的讲述,而是抓住其主要结构,阐述其设计思想,全书内容丰富,结构合理,前后呼应。读者在阅读本书的同时,真感觉是一种享受。       

     第一篇是勿在浮砂筑高台。对于刚刚学习C++,刚刚从Turbo C那样的环境下过来的初学者,此章尤为重要,这一点我深有感触。我接触程序设计是在2002年以后,刚刚学习C语言,然后学习了C++语言,那时用的是Turbo C。学习了这些语言之后,就在想,怎么样才能用C、C++写出漂亮的窗口。当时,许多同学在学习了C语言之后,迅速转到了VB、Dephi等快速开发工具上去了,因为这些开发工具快捷的开发能力,容易入门和掌握的特点,对他们吸引很大。但我笃信C、C++,是它们忠实的拥趸。但怎样才能用C、C++进行Windows程序开发呢,这是当时我面临的问题。好在后来我发现了大师Charles Petzold的《Windows程序设计》,如获至宝,这本书为我指明了Windows程序设计的道路。运用此书介绍的Windows程序设计的方法和概念,我完成了我的毕业设计:用C语言写了一个基于Windows窗口的网络通信程序。然而,这样原始的Windows程序设计的方法毕竟不是长远之计,随后自然是要使用MFC,学习MFC的道路也是曲折的,首先当然是学习C++,然后看了一大堆的VC++程序设计之类的书,书上的操作介绍了很多,仿佛是使用指南。对于为什么这样操作,为什么如此使用,我是一头雾水。“只用一样东西,不明白它的道理,实在不高明”。

终于,侯老师的这本书成了我的指路明灯,第一篇的第一章就把我前面的SDK方式的Windows程序设计观念联系起来了,对Windows系统的一些内核操作也有了初步的概念。第二章则让我复习了学过的C++语言,同时加深了对其应用的理解。MFC是用C++语言构建起来的,C++的性质与MFC密切相关,明白这些性质与MFC的联系是理解MFC的关键,如多态,如虚函数,如this指针。这一章可以说是使对C++的知与行进行了统一。第三章对MFC的关键技术进行模拟。此章的目的不是让我们也去设计一个MFC,设计一个Framework,而是通过仿真的方式,了解MFC的设计思想,了解C++的性质是如何浸入到MFC中的。个人觉得此章是全书的关键,也是第二个亮点。深入理解此章的内容,在看后面的内容时,可以达到事半功倍的效果。

透过此章,我们可以抓住MFC的主要技术脉络。       

     第二篇是欲善工事先利其器。此篇只有一章,主要介绍VC++集成开发环境的使用,这就有点像那些指南性的书籍了,不过这并不是本书重点,侯老师也简要带过。此章也从另一方面说明了VC++到底是不是一门语言。准确地说,它不是一门语言,就此软件本身,它只是一个开发工具,只不过里面集成了各种各样的开发工具,使程序员在此环境中就能实现所有的开发过程,达到开发过程的“集成”。但从VC++提供了MFC这样的Framework来说,似乎又有点像语言,我想微软从MFC发展到现在的.net,从通过MFC的一些并非语言本身的宏来实现Framework的架构到.net包含的语言中内嵌Framework的实现,这个过程实际上也是语言与开发环境在不断融合的过程。       

     第三篇是浅出MFC程序设计。此篇内的三章内容,描述了MFC的整个架构,并与前面第一章的内容遥相呼应,不断把MFC对程序的实现过程与SDK的方式进行比较。CWinApp取代了WinMain,隐藏了程序的入口点,引爆了程序的执行,推动了消息的运转;CFrameWnd取代了WndProc,向Windows注册了所需的窗口类,承接了对消息的接收,并与MFC的消息处理机制结合到一起。本篇的最后一章是后面内容的开头,通过分析MFC的骨干程序结构,奠定了深入分析MFC程序的基础。       

     第四篇是深入MFC程序设计。此篇是对MFC的深入探讨和对一些高级应用的讲述,以前一篇最后给出的Scribble程序为例,详细论述了MFC的运行时类型识别、动态创建、串行化和消息映射与命令传递的实现机制。我觉得其中最值得以为榜样的是讲解程序的方法。对Scribble程序,侯老师从对其的数据结构设计开始,与MFC的结构紧密结合,追根究底,在读者面前展现了一幅幅Scribble程序的每个侧面。程序虽不复杂,道理亦浅显,完整地分析展现却不是件容易的事,侯老师图文并貌,生动有趣地引导读者完成了对MFC架构的理解。最后的多线程程序,定制AppWizard,使用组件和ActiveX,则为读者的进一步进阶打下了基础。       

     我觉得透过这本书,最值得学习的是侯老师深入仔细的钻研精神。侯老师不厌其烦,把MFC的整体架构全部展现在我们的面前,深入MFC内部,把它的代码分析给我们看。这种实证精神,我觉得是大陆广大的程序学习人员、研究人员开发人员所缺乏的。这些年大陆所出版的各式各样的VC++不可谓不多,但真正能达到像侯老师这样,深入地分析MFC的内部情况,而不是只讲述操作过程的书,真的没有几本。期望大陆能多出这样的好书,也期望侯老师能笔耕不辍,再出佳品!
0 0