“MFC的前言”
曾经辉煌一时的编程语言工具开发软件商Borland公司在今年4月份更名为Inprise公司,对于广大忠实的Borland追随者来说,这可不是一个好消息。在Dos编程时代Turbo Pascal,Borland C++是{zh0}的开发工具,Borland公司也曾名列美国五大软件公司之列,可到了Windows时代,微软凭借操作系统的优势终于占了统治地位,Borland的大批人员也跳槽加入了微软(Borland Delphi的主设计师成了Microsoft Visual J++的项目负责人),所以不用奇怪Microsoft的Visual C++汲取了各家技术之长,包括Borland,Phar-lap等xx公司,Visual C++成了Windows时代{zlx}的商用开发语言。
Windows的开发也走向成熟,早期Windows编程只能用C语言,需要一段一段地重复调用复杂的Windows API,写冗长的消息处理Switch语句,现在大部分开发人员都使用C++进行Windows编程,工具开发商也将Windows API和必要的资料封装到一个个C++类库之中,构成所谓“应用程序框架”(Application Framework),开发人员可以使用它xxx地进行编程,这好比登高楼时用上了电梯,而原来只能辛辛苦苦一步一步慢慢爬,现在用电梯可以上得更快,上得更高,上得更轻松。
Visual C++的“应用程序框架”类库是MFC(Microsoft Foundation Class),Borland公司提供的是OWL(Object Windows Library),OWL和MFC孰优孰劣,笔者不敢妄加评论,但现实是Borland的C++到5.02版就改出C++ Builder,类库改用Delphi的VCL(Visual Component Library)。
MFC功能十分强大,但要学好不容易。Visual C++提供了各种Wizard和上千种C++类,如果不掌握面向对象编程OOP(Object Oriented Progamming)的技术,了解MFC的结构,很难设计出良好的程序。很可惜,国内关于这方面有内容和深度的书籍出版太少,而国外的技术书籍在国内又不容易买到,不知道有没有这样的书店可以提供购买国外原版技术书籍的服务,{zh0}还能再打一些折扣,技术书籍的版本更新太快,国外一般书籍较早版本的技术书折扣都很低。
“绝版〈Visual C++内幕〉”
是一本关于MFC编程很不错的书籍,国外{zx1}版是第五版,介绍Visual C++ 5.0版,国内中文版由清华大学出版社翻译出版,目前是第二版,介绍Visual C++ 2.0。作者是David Kruglinski.
这本书面向的读者是有C和C++基础,对Visual C++较为陌生的程序员,通过一个一个范例逐步深入介绍MFC编程的方法,而且对于编程中如何使用各种工具作了详细说明,包括按下哪个按钮,从列表框选择哪一项等,对于VC的新用户来说很方便的。但这绝不是说这本书是一本入门手册,作者只是在需要的时候介绍,毕竟现在的软件使用越来越复杂了。对于水平较高的读者这本书也有足够多的高级内容可供参考学习。
书中分了四个部分,首先快速介绍“应用程序框架”基本概念和各种工具如调试器,AppWizard,ClassWizard等,接着开始进入MFC编程话题,主要是视类(CView)的用法,通过一些简单程序如绘图,消息响应,图形滚动,对话框控制和OCX使用初步展示MFC编程的方法。
第三部分介绍文档-视结构(Document-View),这也是MFC的核心内容,当你掌握了如何联结文档和视结构后,你会发现相比以前现在实现文件操作和打印多么方便,MFC内部使用了几千行代码支持打印预览和各种打印机,Charles Petzold的xx的〈Windows程序设计〉一书花了60页的篇幅介绍如何支持各种打印机,但使用MFC实现只有几十行代码。这部分还介绍了各种界面工具,窗口切分,帮助系统,多文档接口(MDI),动态连接库DLL等。{zh1}部分是高级话题,介绍OLE和资料库管理ODBC,不像一般书籍关于这个内容只是蜻蜓点水,这部分内容非常丰富而且有实用价值.
新的英文版主要增加内容大致有三个方面,首先是介绍了VC 5.0的一些新特性,其次对OLE进行了更为深入全面的介绍,包括结构化存储,组件对象模式(COM),OLE自动化等,{zh1}是关于目前最热门的Internet技术,TCP/IP协议,Winsock,WinInet API等,关于Internet的内容只是一个快速介绍,新版内容更充实,不知道清华出版社有没有计划出本书的新版。
英文书第五版的{zh1}还刊登了一张作者的巨幅照片和一则令人伤感的消息,“David是一个作家,程序员,老师和户外活动者(Outdoorsman),热爱徒步旅行,爬山,xxx.1997年4月17日David 死于一次跳伞意外,终年49岁。” 到VC 5.0成为绝唱,但David的书籍影响了几十万程序员,而且他活得自由自在,人生至此,也就够了。
“VC书籍和MFC书籍”
全面介绍MFC的书籍国内出版太少,但关于Visual C++的书籍却不少,真不知道这些人是如何选材的,MFC才是Visual C++的核心,不掌握好MFC ,怎么设计出好的VC程序。
机械工业出版社的一书介绍了很多MFC的应用实例,其实英文名是〈Visual C++ How TO〉,程序员进行编程时会碰到很多问题,这本书提供了很多技术解决方法,对于VC程序员颇具参考价值。
国外关于MFC的好书还有Jeff Prosise的,Alan R. Feuer的〈MFC Programming〉,Addison Wesley公司出版的以及台湾候俊杰的〈深入浅出MFC>. Jeff和Alan的书都是全面介绍MFC编程,风格内容稍有不同,Jeff讲解更为详细xx.
属于Addison Wesley公司的“未公开核心”系列丛书,是一本高级技术书籍,面向有Windows SDK 和MFC基础的较高水平程序员,讲解MFC的实现原理和核心技术,如何将Windows SDK和API包装,对于想成为VC高手的人来说这是一本必备书,可惜现在还没有中文版.
候俊杰是台湾xx的技术专栏作家,写过很多畅销的Windows编程书籍,也翻译过很多xx的英文技术书籍。他技术水平很高,同时文字功夫很好,又能把握读者需求,这本书在台湾很受欢迎也就理所当然了。这本书介于和之间,既介绍了MFC的应用,又介绍了MFC的核心技术。前一半介绍Win32,C++,MFC设计基本概念,后一半从VC的演示程序Scribble出发,挖掘MFC的实现机制,书中有很多精心插图,作者把握技术脉络十分清晰,是一本值得大力推荐的好书。
“感想”
很多国内编著的技术书号称“高级编程”,实际上只相当于是入门手册,没有多少技术含量。选择书最重要的是看作者,看他是否具有真正的水平,是否能将技术阐释清楚.国内一些编书或者翻译的人自己只是一知半解,只追求速度和效益,结果只能是误人子弟。但水平很高的人如果选材过于艰深,晦涩难懂,也很难为读者接受。台湾在这方面做得很不错,一方面好的英文版的技术书籍他们能很快翻译出版,同时自己水平提高后也能写出较好的书籍。国内应该向他们学习,技术书籍市场需求量应该很大,出版社花精力出一些精品书籍对于整个软件行业水平的提高应该有很大帮助。软件评论家总在呼吁国产精品软件,但技术水平上不去,又何来精品呢?