本书不论繁体版或简体版,都创下相当记录。
然而自 2001 年起,由於松岗图书公司的变化,不复再有新刷。
我已开放繁体版 PDF电子书

繁体二版共11刷,9300+780 册
繁体一版共02刷,2500+200 册

《深入浅出 MFC》2/e
  繁体中文版

侯俊杰 着

u002p.jpg (14505 bytes)

繁体版 勘误

frame1-frame8 程式源码下载

答客问

完整电子书开放


【基本资料】

书名:深入浅出 MFC 第二版
出版:松岗 1997.05
ISBN:957-22-2518-9
页数: 16 章,942 页
定价:NT$ 860.0

【自序】

山高月小 水落石出

二版序

任何人看到本书的读者来函,都会感动於一本电脑书籍的读者与作者竟然能够产生如此深厚的共鸣,以及似无若有的长期情感。

何况,身为这本书的作者的我!

我写的是一本技术书籍,但是蠃得未曾谋面的朋友们的信赖与感情。我知道,那是因为这本书里面也有许多我自己的感情。每当收到读友们针对这本书寄来的信件(纸张的或电子的),我总是怀着感恩的心情仔细阅读。好几位读友,针对书中的可疑处或是可以更好的地方,不吝啬地拨出时间,写满一大张一大张的信纸,一一向我指正。我们谈的不只是技术,还包括用词遣字的意境。新竹刘嘉均先生和加拿大陈宗泰先生给我非常宝贵的技术上的意见。陈先生甚至在一个月内来了五封航空信。

这些,怎不教我心怀感谢,并且更加戒慎恐惧!

感谢所有读者促成这本书的更精致化。Visual C++ 5.0 面世了,MFC 则停留在4.2,程式设计的主轴没有什麽大改变。对於新读者,本书乃全新产品自不待言,您可以从目录中细细琢磨所有的主题。对於老读者,本书所带给您的,是更精致的制作,以及数章新增的内容(请看第0章「与前版本之差异」)。

最後,我要说,我知道,这本书真的带给许多人很扎实的东西。而我所以愿意不计代价去做些不求近利的深耕工作,除了这是身为专业作家的责任,以及个人的兴趣之外,是的,我自己是工程师,我最清楚工程师在学习 MFC 时想知道什麽、在哪里触礁。

所有出自我笔下的东西,我自己受益最丰。

感谢你们。

侯俊杰 台湾.新竹 1997.04.15

第一版序

有一种软体名曰 version control,用来记录程式开发过程中的各种版本,以应不时之需,可以随时反省、检查、回覆过去努力的轨迹。

遗憾的是人的大脑没有 version control 的能力。学习过程的 徨犹豫、挫折困顿、在日积月累的渐悟或刹那之间的顿悟之後,彷佛都成了遥远模糊的回忆;而屡起屡仆、大惑不解的地方,学成之後看起来则是那麽「理所当然」。

学习过往的艰辛,模糊而明亮,是学成冠冕上闪亮的宝石。过程愈艰辛,宝石愈璀璨。作为私人「想当年」的绝佳话题可矣,对於後学则无甚帮助。的确,谁会在一再跌倒的地方做上记号,永志不忘?谁会把推敲再三的心得殷实详尽地记录下来,为後学铺一条红地毯?也许,没有 version control 正是人类的本能,空出更多的脑力心力与精力,追求更新的事物。

但是,作为资讯教育体系一员的我,不能不有 version control。事实上我亦从来没有忘记初学 MFC 的痛苦:C++ 语言本身的技术问题是其一,MFC 庞大类别库的命名规则是其二,熟知的 Windows 程式基本动作统统不见了是其三,物件导向的观念与 application framework 的包装是其四。初学 MFC programming 时,我的脑袋犹如网目过大的筛子,什麽东西都留不住;各个类别及其代表意义,过眼即忘。

初初接触 MFC 时,我对 Windows 作业系统以及 SDK 程式设计技术的掌握,实已处在众人金字塔的顶端,困顿犹复如斯。实在是因为,对传统程式员而言,application framework 和 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 原始码给你看。

这是我所谓的深入。

唯有掌握住 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、Command Routing 等核心技术。这些技术正是其他书籍最缺乏的部份。此篇之最後数章则脱离 Scribble 程式,另成一格。

本书前身,1994/08 出版的 Visual C++ 物件导向MFC程式设计 基础篇以及 1995/04 年出版的应用篇,序言之中我曾经这麽说,全世界没有任何书籍文章,能够把 MFC 谈得这麽深,又表现得这麽浅。这些话已有一半成为昨日黄花:Microsoft Systems Journal 1995/07的一篇由Paul Dilascia 所撰的文章Meandering Through the Maze of MFC Message and Command 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与Command Routing的讨论也更详细得多,填补了上一版的缝隙。更值得一提的是, 我把这些在 MFC 中极神秘而又极重要的机制,以简化到不能再简化的方式,在 DOS 程式中模拟出来,并且补充一章专论 C++ 的高阶技术。至此,整个 MFC 的基础架构已经完全曝露在你的掌握之中,再没有任何神秘咒语了。

本书从 MFC 的运用,钻入 MFC 的内部运作,进而 application framework 的原理,再至物件导向的精神,然後回到 MFC 的运用。这会是一条迢迢远路吗?

似远实近!

许多朋友曾经与我讨论过,对於 MFC 这类 application framework,应该挖掘其内部机制到什麽程度?探究原始码,岂不有违「黑盒子」初衷?但是,没有办法,他们也同意,不把那些奇奇怪怪的巨集和指令搞清楚,只能生产出玩具来。对付 MFC 内部机制,态度不必像对付 MFC classes 一样;你只需好好走过那麽一回,有个印象,足矣。至於庞大繁复的整个application framework 技术的铺陈串接,不必人人都痛苦一次,我做这麽一次也就够了。

林语堂先生在 朱门 一书中说过的一句话,适足作为我写作本书的心境,同时也对我与朋友之间的讨论做个总结:

只用一样东西,不明白它的道理,实在不高明」。

祝各位 胸中丘壑自成!

侯俊杰 新竹 1996.08.15

P.S. 愈来愈多的朋友在网路上与我打招呼,闲聊谈心。有医师、盲生、北京的作家、香港的读者、从国中到研究所的各级学生。学生的科系范围广到令我惊讶,年龄的范围也大到令我惊讶。对於深居简出的作家而言,读者群只是一个想像空间,哦,我真有这麽多读者吗?! 呵呵,喜欢这种感觉。回信虽然是一种压力,不过这是个甜蜜的负担。

你们常常感谢我带给你们帮助。你们一定不知道,没有你们细心研读我的心血,并且热心写信给我,我无法忍受写作的漫漫孤寂!我可以花三天的时间写一篇序,也可以花一个上午设计一张图。是的,我愿意!我对拥有一群可爱可敬的读者感到骄傲。

深入浅出MFC 二版五刷感言

我很开心地获知,深入浅出 MFC 第二版即将进行第五刷。如果把第一版算进去,那就累积印制 9150 本了(不含简体版)。也就是说,这本书拥有几近一万人(次)的读者群(不含简体版读者)。

对一本如此高阶又如此高价的技术书籍而言,诚不易也。我有许多感触!

先从技术面谈起。我阅读过的 VC++ 或 MFC 书籍不算少,因此,我很有信心地说,这本书的内容有其独步全球之处。本书企图引领读者进入 MFC 这个十分庞大并在软体工具市场上极端重要之 application framework 的核心;我尝试剖析其中美好的物件导向性质(注1)的实作方式,亦尝试剖析其中与Windows 程式设计模型(注2)息息相关之特殊性质(注3)的实作方式。

注1:此指 runtime type information、dynamic creation、persistence、document/view┅。

注2:此指 message based、event driven 之 programming model。

注3:此指 message mapping、command routing ┅。

在技术层次上,唯 MFC Internals 堪与本书比拟(本书附录A附有 MFC Internals 简介)。

但是 MFC InternalsDissecting MFC(本书之英文名称)不仅在内容上各擅胜场,在诉求上亦截然不同。这本书并不是为精通 MFC programming 的老手而写(虽然它通常亦带给这样的读者不少帮助),而是为初窥 MFC programming 的新手所写。MFC Internals 可以说是为技术而技术,探讨深入,取材范围极广;Dissecting MFC 却是为生活而技术,探讨深入,但谨守主轴份际。所有我所铺陈的核心层面的知识,都是为了建立起一份扎扎实实的programming 基础,让你彻底了解 MFC 为你铺陈的骨干背後,隐藏了多少巧妙机关,做掉了多少烦琐事务。

有了这份基础,你才有轻松驾驭 MFC 的本钱。

唯有这份基础,才能使你胸中自有丘壑。

如果够用心,你还可以附带地从本书概略学习到一个 application framework 的设计蓝图。虽然,99.99999% 的programmer 终其一生不会设计一个 application framework,这样的蓝图仍可以为你的物件导向观念带来许多面向的帮助。

我一直希望,能够为此书发行英文国际版。囿於个人的语文能力以及时间,终未能行。但是看到来自世界各地的华人读者的信函(加拿大、纽西兰、越南、印尼、香港、中国大陆、美国...),也是另一种安慰。在BBS 及Internet News看到各界对此书的评介,以及对此书内容的探讨,亦让我感到十分欣喜。

这本书(第二版)所使用的开发环境是 Visual C++ 5.0 & MFC 4.21。就在第五刷即将印行的今天,Visual C++ 6.0 也已问世;其中的 programming 关键,也就是 MFC,在主干上没有什麽变化,因此我不打算为了 Visual C++ 6.0 而改版

在此新刷中,我继续修正了一些笔误,并加上新的读者来函。

未来,本书第三版,你会看到很大的变化。

侯俊杰 台湾.新竹 1998.09.11

【导读】

你一定要知道(导读)

这本书适合谁

深入浅出MFC是一本介绍 MFCMicrosoft Foundation Classes)程式设计技术的书籍。对於 Windows 应用软体的开发感到兴趣,并欲使用 Visual C++ 整合环境的视觉开发工具,以 MFC 为程式基础的人,都可以从此书获得最根本最重要的知识与实例。

如果你是一位对 Application Framework 和物件导向(Object Oriented)观念感兴趣的技术狂热份子,想知道神秘的 Runtime Type InformationDynamic CreationPersistenceMessage Mapping 以及 Command Routing 如何实作,本书能够充分满足你。事实上,依我之见,这些核心技术与彻底学会操控 MFC 乃同一件事情。

全书分为四篇:

第一篇【勿在浮砂筑高台】提供进入MFC核心技术以及应用技术之前的所有技术基础,包括:

第二篇【欲善工事先利其器】提供给对 Visual C++ 整合环境全然陌生的朋友一个导引。这一篇当然不能取代 Visual C++ User's Guide 的地位,但对整个软体开发环境有全盘以及概观性的介绍,可以让初学者迅速了解手上掌握的工具,以及它们的主要功能。

第三篇【浅出 MFC 程式设计】介绍一个 MFC 程式的生死因果。已经有 MFC 程式经验的朋友,不见得不会对本篇感到惊艳。根据我的了解,太多人使用 MFC 是「只知道这麽做,不知道为什麽」;本篇详细解释 MFC 程式之来龙去脉,为初入 MFC 领域的读者奠定扎实的基础。说不定本篇会让你有醍醐灌顶之感。

第四篇【深入 MFC 程式设计】介绍各式各样 MFC 技术。「只知其然 不知其所以然」的不良副作用,在程式设计的企图进一步开展之後,愈来愈严重,最终会行不得也!那些最困扰我们的 MFC 巨集、MFC 常数定义,不得一窥堂奥的 MFC 黑箱作业,在本篇陆续曝光。本篇将使您高喊:Eureka

范例程式方面,第三章有数个 Console 程式(DOS-like 程式,在 Windows 系统的DOS Box 中执行),模拟并简化 Application Framework 六大核心技术。另外,全书以一个循序渐进的 Scribble 程式(Visual C++ 所附范例),从第七章开始,分章探讨每一个 MFC 应用技术主题。第13章另有三个程式,示范 Multi-View Multi-Document 的情况。14~16章是第二版新增内容,主题分别是 MFC 多绪程式设计、Custom AppWizard、以及如何使用 Component Gallery提供的 ActiveX controls components

你需要什麽技术基础

从什麽技术层面切入 Windows 软体开发领域?C/SDK?抑或 C++/MFC?这一直是个引起争议的论题。就我个人观点,C++/MFC程式设计必须跨越四大技术障碍:

  1. 物件导向观念与 C++ 语言。
  2. Windows 程式基本观念(程式进入点、讯息流动、视窗函式、callback...)。
  3. Microsoft Foundation Classes(MFC)本身。
  4. Visual C++ 整合环境与各种开发工具(难度不高,但需熟练)。

换言之,如果你从未接触 C++,千万不要阅读本书,那只会打击你学习新技术的信心而已。如果已接触过 C++ 但不十分熟悉,你可以一边复习 C++ 一边学习 MFC,这也是我所鼓励的方式(很多人是为了使用 MFC 而去学习 C++ 的)。C++ 语言的继承(inheritance)特性对於我们使用 MFC 尤为重要,因为使用 MFC 就是要继承各个类别并为己用。所以,你应该对 C++ 的继承特质(以及虚拟函式,当然)多加体会。我在第2章安排了一些 C++ 的必要基础。我所挑选的题目都是本书会用到的技术,而其深度你不见得能够在一般C++ 书籍中发现。

如果你有 C++ 语言基础,但从未接触过Win16 Win32程式设计,只在DOS环境下开发过软体,我在第1章为你安排了一些 Win32 程式设计基础。这个基础至为重要,只会在各个 Wizards 上按来按去,却不懂所谓 message loop window procedure 的人,不可能搞定 Windows 程式设计 -- 不管你用的是 MFC OWL Open Class Library,不管你用的是 Visual C++ Borland C++ VisualAge C++

你需要什麽软硬体环境

一套Windows 95(或 Windows NT)作业系统当然是必须的,中英文皆可。此外,你需要一套 Visual C++ 32 位元版。目前的最新版本是 Visual C++ 5.0,也是我使用的版本。

硬体方面,只要能跑上述两种作业系统就算过关。记忆体(RAM)是影响运作速度的主因,多多益善。厂商宣称 16MB RAM 是一个能够使你工作舒适的数字,但我因此怀疑「舒适」这个字眼的定义。写作本书时我的软硬体环境是:

与前版本之差异

深入浅出MFC 第二版与前一版本之重大差异在於:

  1. 软体工具由 Visual C++ 4.0 改为 Visual C++ 5.0,影响所及,第4章「Visual C++ - 整合性软体开发环境」之内容改变极大。全书之中有关於MFC 内部动作逻辑及其原始码的变动不多,因为Visual C++ 5.0中的 MFC 版本还维持在4.2。
  2. 第1章增加 Console 程式设计,以及Win32 多绪程式实例 Mltithrd。
  3. 第2章增加「四种不同的物件生存方式」一节。
  4. 第3章去除原有之Frame5 程式(该程式以 MFC 2.5 的技术模拟 Dynamic Creation)。
  5. 第4章全部改为 Visual C++ 5.0 使用画面,并在最後增加一节「Console 程式的专案管理」。
  6. 第6章增加「奇怪的视窗类别名称 Afx:x:y:z:w」一节,以及增加 Hello 程式对 idle time 的处理。
  7. 增加 14~16 三章。
  8. 附录A增加 <无责任书评/侯捷先生> 的「MFC 四大天王」一文。
  9. 附录D由原先之「OWL 程式设计一览」,改为「以 MFC 重建 DBWIN」。

【目录】

目录

第0章 你一定要知道(导读) / 27

第1章 Win32 程式基本观念 / 003

第2章 C++ 的重要性质 / 055

第3章 MFC 六大关键技术之模拟 / 109

第4章 Visual C++ - 整合性软体开发环境 / 219

第5章 总观 Application Framework / 311

第6章 MFC 程式设计导论 - MFC 程式的生死因果 / 343

第7章 简单而完整:MFC 骨干程式 / 411

第8章 Document-View 深入探讨 / 455

第9章 讯息映射与命令绕行 / 547

10 MFC与对话盒 / 601

11 View功能之加强与重绘效率之提升 / 627

12 印表与预览 / 659

13 多重文件与多重显示 / 701

14 MFC 多绪程式设计(Multi-threaded Programming in MFC/ 745

15 定制一个AppWizard / 771

16 站上众人的肩膀 - 使用 Components ActiveX Controls / 791

附录A 无责任书评:从摇篮到坟墓 - Windows 的完全学习
          无责任书评:
MFC四大天王 / 856

附录B Scribble Step5 程式原始码列表 / 873

附录C Visual C++ 5.0 MFC范例程式总览 / 915

附录D MFC 重建 Debug WindowDBWIN/ 921

【读者来函】

1996年11月,我在书店看到了 深入浅出MFC 这本书,让我想起自己曾经暗暗告诉过自己:Application Framework 真是一个好东西。我在书店驻足察看这本书五分钟之後,我便知道这本书是一定要买下的。适巧我工作上的专案进度也到了一个即将完成的阶度,所以我便一口气将这本书给读完了,而且是彻彻底底读了两遍。

我个人特别喜欢第3章:MFC 六大关键技术之模拟。这章内容的设计的确在 MFC 丛林中,大刀阔斧地披露出最重要的筋络,我相信这正是所有学习 MFC 的人所需要的一种表明方式。对我而言,以往遗留的许多疑惑,在此都一一得到了解答。最重要的是,您曾经说过,学习MFC的过程中最重要的莫过於自我审视MFC程式码的能力。很高兴地,在我看完本书之後,我确实比以前更有能力来看MFC原始码了。总之,我为自己能够更深入了解MFC 而要向您说声谢谢。谢谢您为我们写了 深入浅出MFC 这本书。我受益匪浅。

阁下之书,尚有人性,因此我叁而再叁,虽不悟,也是 enjoyable。看阁下之书的附带效果是,重燃我追求知识的热情。知也无涯,定慧谈何容易。向阁下致敬:『Kruglinski 的 Inside Visual C++ 和 Hou 的 Dissecting MFC 是通往 MFC Programming 的皇家大道』。

我是你的一位读者,住在香港。我刚买了你翻译的 Inside Visual C++ 4.0(中文版)。在此之前我买了你的另一本书 深入浅出MFC。在读了 深入浅出MFC前面50~70 页之後,我想我错买了一本很艰深的书籍。我需要的是一本教我如何利用MFC来产生一个程式的书,而不是一本教我如何设计一套MFC的书。但是在我又读了30~40 页之後,我想这本书真是棒,它告诉了我许多过去我不甚清楚的事情,像是 virtual function、template、exception...。

我是您的忠实读友,从您1992年出版的「Windows程式设计」到现在的 深入浅出MFC,我已花不少银子买下数本您的大作。虽然您的作品比其他国内出版的作品价格稍为高了一点,但我觉得很值得,因为我可以感受出您真的非常用心在撰写,初阅读您的作品时,有时不知其然,但只要用心品尝,总是入味七分。有些书教人一边看书一边上机实作,会是一个比较好的学习曲线,但我是一个从基隆到台北通车的上班族,花很多时间在车上,在车上拜读您的大作真是让人愉快的事情(我回到家已晚,也只有在车上能有时间充实自己)。这段时间内,我无法上机,却能从中受益。而且一次再一次阅读,常会有新的收获,真如古人所说温故而知新。

今天抱着「无论如何一定要」的心情, 把 Dissecting MFC 拿出来开封。序还看没完就被深深地感动。这是一本太好的书,我想,我们是一群幸运的读者。虽然我们没有Petzold 或 Pietrek, 但是我们一样能拥有最好的阅读水准。

有个问题想问您,为何在台湾要做基础的事(R & D)总是很难如愿。为何只有做近利的事才能被认可为成功之道。希望您能多出版一些像 深入浅出MFC的书,让我们这些想要真正好书的人能大快朵颐一番。谢谢。

我是您忠实的读者,您所写的书一向是我在学习新的东西时很大的帮助。除此之外,我也十分喜欢看你为新书所写的序,带有哲学家的感觉!最近我想学 MFC,在市面上找到你的大作 深入浅出MFC,拜读後甚为兴奋,也十分谢谢您写书的用心。

深入浅出MFC是我所读过之MFC书籍中最精采的一本。您大概不知道,我们人手一本 深入浅出 MFC 吧。深入Visual C++ 4.0 的情况也差不了多少!

买了您的译作 深入Visual C++ 4.0後,才认识您这在 Windows Programming 着作方面的头号人物。十分佩服您的文笔,译得通顺流畅,可谓信达雅。之後偶然翻阅您另外的作品Windows 95 系统程式设计大奥秘 深入浅出 MFC,更是对您五体投地,立刻将这两本书买下来,准备好好享受一下。对於 深入浅出 MFC,我给予极高的评价,因为它完全满足我的需要。我去年才从台大电机博士班计算机科学组毕业,目前在资策会资讯技术处服国防役。先前作的纯是理论研究,现在才开始接触 Windows Programming。您的 深入浅出 MFC 对我而言是圣经。

真的很感谢您为知识传授所作的努力!

自从阅读 深入浅出MFC 之後,我便成了您的忠实读者。我并不是一位专业程式设计师,而是一个对 Windows Programming 有浓厚兴趣(和毅力)的大学生。在漫长而陡峭的学习曲线中,有几本书对於我们而言就像茫茫大海中的一盏明灯,为我们指引明确的航道!我说的是 Charles Petzold 的Programming Windows 95、David J.Kruglinski 的 Inside Visual C++,还有,当然,您的 深入浅出 MFC!

对您的书总是捧读再三,即使翻烂了也值得。这本 深入浅出 MFC,不但具有学习价值,亦极具叁考价值。

我买您的第一本书,好像是「记忆体管理与多工」。还记得当时热中突破 640KB记忆体,发现该书如获至宝。数月前购买了 深入浅出 MFC,并利用闲暇时间翻阅学习(包括如厕时间...J )。

我的学习曲线比较不同,我比较倾向於了解事情的因,而不是该如何做事情。比方说,「应该使用 MFC的哪个类别」或「要改写哪个虚拟函式」,对我而言还不如「CWinApp 何时何地呼叫了我的什麽函式」或「CDocManager 到底做了什麽」来得有趣(嗯,虽说是一样重要啦)。这些「事情的因」在您的书中有大量详细的介绍。

拜读您的大作 深入浅出 MFC 令我感到无比兴奋,对於您对电脑技术的专研如此深入,感到真是中国人之光。系上同学对於您的书籍爱恨交加,爱是如此清晰明了,恨是恨自己不成材呀!许多学长、同学、学弟都很喜爱您的作品,有些同学还拜您为偶像。因此想请您来演说,让我们更深入认识程式语言的奥秘。大四学长知道要邀请您来,都非常高兴,相当期待您的到来。

深入浅出 MFC 我读好几遍了,讲一句实在话,这本书给我的帮助真的很多!毕竟这样深入挖 MFC 运作原理的书难找!要学 MFC 又没有 Windows SDK 经验者,建议跟 Programming Windows 95 with MFC 一起看,学起 MFC 会比较扎实。

若单纯就「买了会不会後悔」来判断一本书到底好不好,这本书我觉得物超所值!

刚才又把 深入浅出MFC step0~step1 的程式看了一次,真的感触良多。酒越陈越香,看老师您的书,真的是越看越「爽」,而且一定要晚上10:00以後看,哇,那种感觉真是过瘾。

在书局看到您多本书籍,实在忍不住想告诉您我的想法!我是来谢谢您的。怎麽说呢?姑且不论英文能力,看原文书总是没有看中文书来得直接啊!您也知晓的,许多翻译书中的每个中文字都看得懂,但是整段落就是不知他到底在说啥!因此看到书的作者是您,感觉上就是一个品质上的保证,必定二话不说,抱回家罗!虽然眼前用不到,但是翻翻看,大致了解一下,待有空时或是工作上需要时再好好细读。

网路书局的盛行,让我也开始上网买些书。但是我只敢买像您的书!有品质嘛!其他的可就不敢直接买罗,总是必须到书局翻翻看,确定一下内容,才可能考虑。

Your books is already 100 times better than any translation on the market. I won't think of to get a Chinese computer book unless you wrote it or translated it.

1997/11月我看见了 深入浅出 MFC。仔细研读後我知道这是我在 MFC 及 Windows 程式设计领域中的大卫之星。您的书一直都是我的良师,不但奠定了我的根基,也使我对 Windows 程式设计兴趣大增。国内外介绍 MFC 程式设计的书很多,但看过范例後仍有一种被当成 puppet 的感觉。感谢侯先生毫不保留地攻坚 MFC,使我得到了豁然开朗的喜悦。

侯先生的文笔及胸襟令我佩服。有着 Charles Petzold 慈父般的讲解,也有着 David J.Kruglinski 特有的风趣。您自述中说「先生不知何许人也」,嗯,我愿意,我愿意做一个默默祝福的人,好叫我在往後岁月里能有更多喝采和大叫 eureka 的机会!

I am a student of NCKU EE Department, I am also a reader of you books. Your Book give me a lot of help on my research.

选到这本书之前,我还在书架前犹豫:「又是一本厚厚大大却一堆废话的烂书,到底有没有比较能让我了解的书呀?」但是读了您的 深入浅出MFC 之後,把我 80% 的疑虑通通消除掉了。想永远做您的读者的读者敬上。

我是您的读者,虽然我尚未看完这本书,只看到第三篇的第5章,但我忍不住要把心得告诉您。去年我因为想写Windows程式而买您的书,说老实话,我实在看不懂您所写的文字(我真的懂C++ 语法,也用Visual Basic写过Windows程式),故放弃改买其他书籍来学习。虽把那些书全部看完了,也利用MFC来写简单程式,但心里仍搞不懂这些程式的 How、What、Why。後来整理书架,发现这本书,就停下来拿来看,结果越看越搞懂这些Windows程式到底如何How、What、Why。正如您的序所说「只用一样东西,不明白它的道理,实在不高明」,感谢您能不计代价去做些不求近利的深耕工作,让我们一群读者能少走冤枉路。谢谢您!! 祝您身体健康 !!

最近正拜读大作 深入浅出MFC,明显感受到作者写书之负责用心(不论内容、排版设计、 甚至用字遣词乃至众多的图示)。虽然刚开始会觉得有些艰涩,但在反覆阅读之後便能深深感受其中奥秘。谢谢你的努力! 请再接再厉让我们有更多好书可看!

身为您的忠实读者,总是希望能让您听到我们的声音:记得您总是常在作品中强调读者们寄给你的信对你具有很大的意义,但我要说,您可能不知道您带给了某些读者多大的正面意义!就我自己而言,从几乎放弃对资讯科学的兴趣,到留下来继续努力,从排拒原文书到阅读原文书成为习惯,从害怕阅读原文期刊到慢慢发现阅读它们的乐趣,然後,我打算往资讯方面的研究所前进。我想,不管将来我是否能将工作和兴趣互相结合,您都丰富了我追求资讯科学这个兴趣时的生活,非常感谢您!

当然,身为一位读者,还是忍不住要自私地说,希望在很久很久以後,还可以看到您仍然在写作!当然,身子也要好好照顾。

I'm your reader in Shanghai JiaoTong University(按:上海交通大学)in mainland. Your <Programming WINDOWS MFC> (按:深入浅出MFC 简体版)is a very good book that I wanted to have for years. Thank you very much. So I want to know if there are another your book that I can buy in mainland? I hope to read your new books.

我非常喜欢你的书,不管是着作或是翻译,给人的感觉真的是 "深入浅出",我喜欢你用浅近的比喻说明,来解释一些比较深入和抽象的东西,读你的书,总让我有突然 "顿悟" 的感觉,欣喜自己能在迷时找到良师。

Microsoft Developer Studio 与 MFC(Microsoft Foundation Classes)相配合,构成了一个强大的利用 C++ 进行 32 位元 Windows 程序开发的工具,但是由于 MFC 系统相当庞大,内容繁杂,并且夹杂着大量令初学者莫明其妙的 macros,更加大了学习上的难度。

当今市面上有不少讲解 C++ 和 VC++ 程序设计的书籍,但 C++ 书籍单纯只讲 C++,从 C++ 过渡到 VC++ 却是初学者的一大难关;大多数讲解 VC++ 的书都将重点放在如何使用 Microsoft Developer Studio,很少有对 MFC 进行深入而有系统的讲解。而将 C++ 与 VC++ 相联系,从 C++ 的角度来剖析MFC 的运作,深入其设计原理与内部机制的书,更是凤毛麟角。本人在市面上找了将近四个月,才发现这样的一本,这就是由蜚声海峡两岸的着名电脑专家侯俊杰先生所着之 《深入浅出 WINDOWS MFC 程序设计》 (按:深入浅出MFC 简体版)。

本人在一月前购得此书,仔细研究月余,自我感觉比以前大有长进,其间由于印刷错误等原因,发现多处错误,于是向先生去信求教,得先生热情支持和辅导。当先生得知本书(简体本)未附光盘,且书中有多处误印,深恐贻误读者,于是将原书光盘所附之源程序和执行文件 email 一份给我,嘱我广为散发,以惠大众。

这真是本值得好好阅读,好好保存的好书

深入浅出MFC,侯 sir 自评为 MFC 四大天王之一,的确是杰作...

我听别人介绍,买了 深入浅出MFC 第二版,的确是很适合我,之前买的书都太笼统了。

侯俊杰先生:您好!从学校出来的七年间,我大多从事 embedded system software 的设计。在大陆,主要从事交换机系统软件的设计,到了美国,主要从事卫星通信地面站系统软件的设计。程序设计主要结合 C 和 Assembly。在大陆,embedded system多采用 Intel 的processor,在美国,embedded system 多采用 Motorola 的 processor。所以,我对 Intel 8086, 8051 系列及 Motorola 68000 系列的 assembly 语言比较熟悉,而对 framework 这样的软件制造思想和手段一直并不熟悉。近来偶有机会加入一个 project,要生成在 Win95 下运行的代码,因此,想尝试一下使用framework 构造软件。很幸运,我找到了您的书。讲 VC++ MFC 的书很多,但能像您这样做到「深入浅出」的,实在很少。看您的书,是享受。我手里这本是简体版,华中理工大学出版社出版。

I am your reader of 《深入浅出 WINDOWS MFC 程序设计》(编按:深入浅出MFC 简体版). I'm leaving in HUBEI__WUHAN(编按:湖北武汉). Now, I have already get the book in HUA_ZHONG_LI_GONG_DA_XUE(编按:华中理工大学). And I am interested in this book very much.

侯先生,您好,我是屏科大的学生,想要用MFC写一个可以新增、修改、删除资料等动作的程式,日前老师借了我您的书 深入浅出MFC 第二版,我读了很快乐,对於Visual C++ 的IDE环境更为了解,对於MFC 整个架构,有了比较明朗的感觉。

尊敬的侯俊杰先生:我叫董旬。我对 C/C++ 非常有兴趣。畅读了您写的书《深入浅出 WINDOWS MFC 程序设计》(编按:深入浅出MFC 简体版),对我有非常大的帮助。在此,先感谢您。现在我感到对 C++ 语言本身和 MFC 框架十分了解,但在编程过程中仍然感到生疏,主要是函数的运用和函数的叁数十分复杂。我对WINDOWS SDK 编程较少,是否应该要熟悉 WINDOWS API 函数后,结合 MFC 框架编程?

侯俊杰回覆:的确如此。MFC 其实就是把 Windows API 做了一层薄薄包装,包装於各个设计良好的 classes 而已。所以,掌握了 MFC framework 架构组织之後,接下来在 programming 实务方面,就是去了解并运用各个 classes,而各个 classes 的 member functions 有许多就是 Windows APIs 的一对一化身。

侯先生你好:我现在是一名资讯预官,还在左营受训。因为受训的关系所以偶然间有机会读到你写的 深入浅出MFC 第二版。本以为这麽大一本书,一定很难K,但从第一眼开始我就深深的被其中优雅且适当的文辞所吸引。尤其当阅读第三章时,那些表格让我回忆起以前修过advanced compiler 去trace java compiler的那段过程,不禁发出会心一笑。

由於我本身学的是电机,所以不同於一般资讯人员所着重的应用层面。从大二时因为想充实自己的电脑实力,努力学写程式开始,就在浩翰的书海中发现你独特的风格。尤其现今电书籍多是翻译居多其中品质良莠不齐,你的作品尤其难能可贵。现今我仍然有时会去阅读专业期刊或者杂志,但碍於毕竟不是资讯教育训练出身,有时会抓不住重点,甚者不求甚解。这是我觉得遗憾之处。但读你的作品让我在质量之间都获得了相当的进步,且读来相当轻松自然。你的序言中提到欢迎读者的反应,这也是这封mail的动机。我想好的作家需要我们的鼓励,当然也希望能从你处获得更多的新知。谢谢。

侯先生:您好!以前我一直是用 DELPHI 和 PB 主要做数据机的,近日在看您编写的 《深入浅出 WINDOWS MFC 程序设计》(编按:深入浅出MFC 简体版),收益非浅,很佩服您的写作水平,讲得非常好。在大陆还是很少有您这般水准写 C++ 的书。在此表示感谢。

尊敬的侯俊杰先生:您好!我是北京的一名计算机工作者,也是您的忠实读者。有幸读到您的一本非常优秀的着作 《深入浅出 WINDOWS MFC 程序设计》(编按:深入浅出MFC 简体版),非常兴奋,自感受益匪浅,觉得是一本难得的好书。

Dear JJHou:

I have heard a lot about your [Dissecting MFC] from internet. It is a very good book..Alough I have worked as a programmer for many years, I am new in MFC and MFC is difficul for me.I think [Dissecting MFC] will help me a lot and wish to buy it.

The problem is that I am now live and work in Japan(I am from Beijng) ,so I would like to know how could I buy the book.(I wish to get the original book from Taiwan) I know that you are very busy and time for you is very precious, I feel very sorry,but I hope you could help me and give me some advice.(I can read BIG5)

Thank you very much for your kindness.

By Dai Hui

我现在正在努力研读先生送我的 <深入浅出 MFC>,经过一个月的时间已
读完前六章,感觉受益颇丰。我从事软体开发与设计已有 6~7 年,学过的用过的
语言不在少数,大小项目也做过不少。自以为对语言已有相当的了解及悟性。
半年前开始自学 MFC,虽然事前对困难有一定的心理准备,也已自学完 C++,
但遇到的困难却超过预期。我如坐入云雾之中,完全不知方向,无法前进。
对於所阅书籍的范例,好像可以理解,但要想对它稍加变动,就不知如何下手,
甚至不知如何去查相关文档。我几乎失去信心,要放弃学习的念头。
直到我得到先生的 <深入浅出 MFC>。经细心研读月馀,似已能窥到 MFC 的脉络,
信心倍增。在前六章中先生不仅精述了学习 MFC 的必备基础观念,更以独到而清晰的思路从庞大的 MFC 中抽出精华,砍去末节,模拟了 MFC 的主要行为方式,
实在精妙绝伦。有什麽能比一个读书人读到一本好书更幸福的呢! 1999/05/27

我最近正在研读您的大作<深入浅出 MFC>2/e,真的深深觉得是一本好书,
呵,最好的地方,是让我觉得,真的是读得非常的顺畅
,尤其是我本身已有c++的基础,真的是一下了就让我对
MFC 这东西有了入门到进阶的认识┅┅,真的,读您的
书,就是”顺畅”这点让我印象深刻(当然这要有很多
因素来奠基的啦┅)

第三次「挑战」您的MFC 2/e  这次是念一些C++ calss,and 先念了一些Inside Visual C++ (byD.J.Kruglinski) 再回头看您这一本....目前挑战第三篇中....

我个人是一边念您的书,一边K别的书,在各书的比较下,您的书并不是一个可以马上K完,马上就可以「用」的应该是要慢慢的念。您写这本书的动机不是要写一本「xx天速成手册」   所以,个人请您在前言中声明一下您写(或规划)这本书的原始动机。

我觉得,本立而道生,如果基础不好,想要真的了解application framework是「不可
能」的!!!而且,请不要把读者预设有年纪的工程师,而请你把读者扩大为大学学生(我虽然是没有修过任何资讯科系的课,不过我所认识的同学中,只要是写windows programing的几乎人手一本!),据说是老师会要求学生看。所以,请您把这本书当成是「可能成为教科书」的可能性来编辑(与写作)。

and...第三次催:深入浅出MFC第三版应该快要出了吧....记得要 using vc++6.0 MFC6.0

主旨: 保重身体,再创佳绩 -- 一个大陆程序员的祝福

侯先生,您好
您的个人网站在大陆有了简体中文版镜像後,我立马拉了个拷贝下来。您的文章太好了 我也研读了您的《深入浅出MFC》,其中的图片解释令我印象深刻,让我对MFC有了更深的认识,谢谢您的工作

您介绍的都是好书,“侯哥介绍的书,准没错,实际上,我现在逛书店时,都是拿您开的单子去的。遗憾的是,大陆现在还比较落後,许多您介绍的好书都看不到,市场充斥肤浅夸张的垃圾,令人伤感。但我相信会逐渐好起来的。

您是个认真踏实,工作起来拼命三郎式的人,我很佩服您。更重要的,我希望您能保重身体,不要累坏了,我们大陆的程序员也希望您是棵常青树,源源不断的介绍好书,翻译好书,写作好书 那我们也就有福了(读您的书或您介绍的书是一种艰苦的享受)。顺祝安康

张中华 99.9.20 广东中山

侯先生:您好
    我是陈欣,曾在一个月前向您询问有关购买《深入浅出 MFC 第二版》
和《Windows 95系统程式设计-虚拟机器与 VxD程式设计》的问题.收到
您的回信後,我即前往松岗网站查询.但会员注册始终注册不成功,导致
不能线上订书.我在不同时间尝试了多次,并发mail询问,都无音讯.
    但幸运的是一日竟在一书店发现了《深入浅出 MFC 第二版》,且仅有
一本了,老板说很久前进的几本,但因为台湾书价高,卖得不好,现在也不进
台湾的书了,真是运气啊!回家後即阅读起来,我很久都没有怀着这麽兴奋
的心情读一本书了(也许此书的来之不易和高的价格也起到了一定作用吧).
现在我已把此书读完一遍,明白了许多以前困扰我的问题,我从未像现在
这样感觉到MFC离我是这麽近,真的.
    .
陈欣 99.11.9


News / BBS 论坛(CompBook and/or programming)

请问,在 MFC 书籍之中,哪一本比较容易懂,因为我是初学MFC,所以我需要的是比较基础且容易了解的,想请大家推荐一下适合的书。

请问,想要从 DOS 跨足到 Windows 程式设计有哪些书值得推荐呢?

请问 VISUAL C++ 初学者适合的好书 ?

刚学 MFC 程式,是否可以推荐几本你认为很好的工具书或者是叁考书,原文的也没关系,重要的是讲的详细。谢谢各位

请推荐几本 Visual C++ 的书


我是一个刚学 VC 不久的人,想写 Windows 程式,却发现一大堆看不懂的函式或类别。查 help,都是英文,难懂其中意思。请问一下有没有关於这方面的函式用法及意义的书籍呢? 有没有这方面的初学书籍。我逛了几间书店,是有买几本 MFC 书籍,不过还是看不懂。

我想请问以下巨集的意义及其使用时机和作用:DECLARE_DYNCREATE, DECLARE_DYNAMIC, IMPLEMENT_DYNAMIC,IMPLEMENT_DYNCREATE, DECLA RE_MESSAGE_MAP, BEGIN_MESSAGE_MAP, END_MESSAGE_MAP。感激不尽,因为我常搅不清楚。

好像世界末日:最近买了 深入浅出MFC。我一页一页仔细地阅读。第一章...第二章...勉强有点概念,但是到了第三章,感觉好像世界末日了。MFC 六大技术的模拟...好像很难懂,读起来非常吃力L 是不是有其他书讲得比较简单的?我不是电脑科系学生,只是对电脑程式设计有兴趣,一路由basic -> FORTRAN -> C -> C++ 走来...


【BBS 上的指教】

作者 iostream                               看板 CompBook
标题 Re: 【深入浅出 MFC 2/e 五刷】感言
时间

==> 在 horngsh.bbs@bbs.cs.nthu.edu.tw (阿瓜) 的文章中提到:
: ※ 引述《EvilKing (杀蛋王)》之铭言:
: > 请问大师是否有勘误表, 我买的是二版二刷. 看得提心吊胆的
: > 谢谢 ^_^
: 问个笨问题,几刷要看哪里?

奇怪! 这本书真有这麽好吗?
我必须提出这个问号???????

以下我有几个想法 :

1. 这本书包装太厚. 不该有的东东太多, 在第一版中, 你甚至可以看到OWL的程式
照侯俊杰先生的说法, 他并不了解OWL. 且在范例中也证明他不明白OWL. 幸好
第二版中, 他删去了这一段. 附录A所列的无责任书评, 在我想来也是多馀. 因
为这篇书评在RUN!PC早有提及, 後来也出了无责任书评第三集, 因此实在没有这
个必要. 想来是侯先生要增加书的厚度, 有以致也.

2. 侯先生在第一章中提出的Win32基本观念. 本来作业系统就是侯先生的专长, 因
此由他来提笔, 实在是最佳的范例. 可是这一章节只到达Jeffrey的水准, 并没
有Matt的水准. 也许是侯先生认为是基本程式观念的考量. 可是我还是以为读
者该有知的权利. 如 : Page 30, 侯先生只简略的提到PE可执行档的格式, 只教
你用DUMPBIN倒出来看看....

3. 第二章, 侯先生提到C++的重要性质. 和侯译的C++物件模型比起来. 这一章只算
是C++的常识篇而已. 并没有触及太多的物件导向观念. 如谈encapsulation就没
有讨论到friend和pointer对封包造成的伤害. 也没有介绍C++的struct和class
具有同价观念. 更别说是interface和implementation的观念了. 说到继承也没
有区分什麽是class inheritance和implementation inheritance了.

4. 第五章, 页325提到C++是一个复杂的语言, AFX小组预期MFC的使用者不可能人人
皆为C++专家, 所以也们并没有采用所有的C++高阶性质(例如多重继承).....
这句话有很大的问题. MFC之前没有多重继承的原因是因为之前MFC模仿的语言
Smalltalk只用单一继承的方式. 而Smalltalk在Framework方面算是先师.

这本书虽然是一本相当用心的书, 但是倒不算是什麽很了不起的书. 它没有实作的
用途, 因为它所举的MFC Library实在太少; 它也不是Inside的书, 因为它的主题
太广, 从C++, SDK, MFC....都没有专精的素求. 最後, 我认为这本书太不实际,
它不涉及网路, 证明侯先生对网路明白太少, 第二它不涉及OLE, 因为他在ATL上面
实在着墨不多, 而ATL和MFC正是Visual C++的二大架构. 这本书实在太老套, 早在
这本书之前侯先生就写过二本Visual C++物件导向的书, 这一本只是再创造而己,
没有其他新意.

於1999.2.26日夜




作者 "炒饭炒面一碗汤" <capri@ms5.hinet.net>, 看板 CompBook
标题 Re: 【深入浅出 MFC 2/e 五刷】感言
时间 DCI HiNet (Sat Feb 27 02:47:04 1999)

终於有人跳出来说话了┅
侯先生的这本大作,好像一直没人批评过,小弟也来叁一脚:

就如同明月先生所说的,书评不应该放在这本书里吧!
或许出版商或侯Sir有他们的考量,但是以读者的立场而言
因为这些东西而让书太厚实在有点┅

这些灌水的东西共计有:

(a)1-16页的读者来函:共16页
(b)超长的序,嗯,这应该没有关系
(c)843-872页的无责任书评:共30页(其实里面有一些发人省思的东西,还好)
(d)873-914页的Scribble原始码:共42页(这最严重,几乎没必要的东西)
(e)915-920页的VC范例程式一览:共6页(很可惜,如果再多加发挥的话很有用,
但是侯Sir只是列个标题,连说明都是英文,和看Help档没什麽差别)

共计:94页

不是我无聊找碴,您可曾看到有哪本书有将近一百页的赘肉?
更别题书中动不动就列出四五页的原始码了。这些在光碟上都有,何必浪费纸张?
也因此这本书成为我书架上土产胖子排行榜的第二名(第一名是C++的Language
Reference、第三名正好也是侯Sir的译作:Inside Visual C++),售价也是佼佼者。(以上皆是讲本土着作,原文书┅$$$$)

不过消掉这些赘肉,这本书还是有它的价值。中文的VC书籍中,很少讲MFC理论的。不过以此观点来看,第四章的IDE介绍就显得有点不伦不类。
而且在章末又放了Scribbled 的原始码20页(唉~这东西在第八章讲的还比较多)

至於书中缺少的部份,我认为要看您如何去定位这本书。
除了网路、ATL,书中对於资料库、DirectX也是付之阙如,ActiveX也着墨不多
但总不能要求一本书把所有Program的东西讲完吧!
以探讨MFC的内部而言,本书没什麽好批评的了。

总而言之,这本书该不该买,我想还是肯定的
但是如果书能瘦点、售价能低点,那就更好了。
至於初学者,千万不要拿这本来入门,先找本简单的看(我不是指 xxx 24 hr之类的)
只要书的说法自已觉得好吸收就行了,旧版4.X,5.x的也有很多好书!

PS.侯Sir说不想为VC6.0改版,说6版只多了一点东西(呵!一堆CxxEx)┅ 很可惜,
中文的VC书籍够少的了。
嗯!如果有改版,也许胖子排行榜的榜主就要换人了。

以上言论仅个人对此书之意见,对侯先生没有任何不敬之意。
对於Program书籍的本土优秀作者,我仍认为除侯Sir不作二人想。
ㄜ!本人并无以此攻击洪先生之意。




作者 gis87506@cis.nctu.edu.tw (Jian-Liang Liu), 看板 CompBook
标题 Re: 【深入浅出 MFC 2/e 五刷】感言
时间 Dept. of Computer & Information Science, NC (Sat Feb 27 14:10:17 1999)

: 就如同明月先生所说的,书评不应该放在这本书里吧!
: 或许出版商或侯Sir有他们的考量,但是以读者的立场而言
: 因为这些东西而让书太厚实在有点┅

书厚不厚没什麽关系,内容是不是充实比较重要.
Programming Windows 95 改版後,厚度不是也很够?

: 这些灌水的东西共计有:
: (a)1-16页的读者来函:共16页
: (b)超长的序,嗯,这应该没有关系
: (c)843-872页的无责任书评:共30页(其实里面有一些发人省思的东西,还好)

书评需不需要也是见仁见智. 我想侯 sir 会列出来也是想要推荐给读者关於
MFC ,windows 这方面领域值的一读的书.

: (d)873-914页的Scribble原始码:共42页(这最严重,几乎没必要的东西)

这部分倒是真的比较没必要再列出来..

: (e)915-920页的VC范例程式一览:共6页(很可惜,如果再多加发挥的话很有用,但
: 是侯Sir只是列个标题,
: 连说明都是英文,和看Help档没什麽差别)
: 共计:94页
: 不是我无聊找碴,您可曾看到有哪本书有将近一百页的赘肉?
: 更别题书中动不动就列出四五页的原始码了。这些在光碟上都有,何必浪费纸张?
: 也因此这本书成为我书架上土产胖子排行榜的第二名(第一名是C++的Language
: Reference、
: 第三名正好也是侯Sir的译作:Inside Visual C++),售价也是佼佼者。(以上皆是讲
: 本土着作,原文书┅$$$$)

Programming windows 95 , Programming windows 95 with MFC .这些重量级
的书,安排的方式也都是把程式码给列出来.不过因为这两本书都没用到 winzard
,所以相对的程式码列出来没像 Inside Visual C++ 那麽的可观.不过每个范例
四五页的程式码也是很平常可见.换个角度来看,也许作者也可以只列出 key point
的地方,针对这些部分作说明即可,而把程式码放到光碟片中,让有需要的人自行去
找出来看.这种方式可以大大的缩减书的厚度,可是对於对 MFC , windows
programming 还不熟的人,这样子的方式反而会照成不便.

就我自己看 programming windows 95(旧版的) 的经验来说,我自己都是用色笔把
范例程式中之前没提过的,或是自己不懂得地方给上色(类似深入浅出 MFC 把重要
的地方给反白),其馀的地方大致上不会再花时间去看.若是今天作者只是把他认为
重要的地方列出来,其它的不列,反而会照成我阅读上的不便.(读书还是比看萤幕舒
服)

一本书的售价合不合理很难去评量.我买书会比较倾向於这本书对我是不是有用.有
用的话,售价再贵也是值得.内容上写的不好,或是对我没用的书籍,再便宜我也不会
想要花这笔钱.书算是最便宜的东西了,花个几百块或是上千块就可以买到作者所学
的精华,去那边可以找到这麽便宜的事呢..




作者 gaussk (Gauss) 看板 CompBook
标题 Re: 【深入浅出 MFC 2/e 五刷】感言
时间 Sat Feb 27 12:06:06 1999

本来我是很不愿意在网路上谈书的, 不过看到这篇文章的评论, 我有很多不
同的意见, 所以我就提出些自己的看法. 从 1993 年微软 VC1.0 出来後我就
开始用 MFC 了, 在此之前我是 base on Windows++ 书中的程式来架构自己的
class library. 如果有人对当年的 MFC vs OWL 论战还有印象的话, 应该知道
在当时 BBS 拥护 MFC 的人很少, 我是少数的几个. 至於 MFC & OWL 的优劣,
我不想再谈, 有兴趣的可以到各 BBS 的精华区看看在 1994 年左右我的文章.

写出以上的历史主要是想说明我对 MFC 的认识足以让我了解什麽才是 MFC
的精华, 何为 MFC 之本. 我用 MFC 写过数十万行的 code, 数个的商业软体.
( 拿过杂志 editor choice, 其中一个後续版本还拿到台湾精品奖).

我看过的 MFC 书籍不知凡几. 真正能掌握精髓的不多. 很不巧, 侯俊杰的这
本书就是我认为 MFC 书中的佼佼者. 早期 MFC 资源不丰富的年代,最好的书
是 VC1.5 内附的 Developer Guide. 它整本书的内容就是以 Scribble 程式来
示范说明 MFC 的使用. 对於 MFC 性能的解说就连当年的 Inside Visual C++
都不及它.而侯俊杰书中以同一个程式来解说, 它的深度及广度更超过了前两者.

很多初学者在学习程式时, 都有 <多就是好> 的迷思, 浑然忘了真正的核心.
就像少林寺有七十二绝技, 但是没有人可以精通所有东西, 真正重要的东西
是少林易经筋或九阳神功这类扎根基的内功. 有了好的内功基础, 打通了任
督二脉, 要再学其他武功的运用法门, 实在是易如反掌, 虽然不至於如张无
忌般, 可以在看过一篇 <少林龙爪手> 之後就可以依样画葫芦使出来, 我想
也相差无几了.

回过头来看看 MFC, 我认为侯书已经将 MFC 的精华点出来了. 如果能将侯书
完全弄懂, 对於 MFC 精神的掌握虽不中亦不远矣. 剩下的就是火候了. 看懂
了侯书之後, 就如同学习到了内功的呼吸吐纳法门, 只要勤加练习, 假以时
日必成大器. 当然练内功是不够的, 还得学习运劲方法, 像是 Inside VC++
及 Jeff Prosise 都是不错的选择. 以上都是侯俊杰在无责任书评中 MFC 四大
天王之一.

基本上初学者要学 MFC, 侯书+Inside VC++ 或 Jeff 书, 两者相辅相成即
可. 至於其他如 OLE, COM, 网路等领域, 都足以再写一本同样厚度的书, 实
在不适宜於在书中.

> 1. 这本书包装太厚. 不该有的东东太多, 在第一版中, 你甚至可以看到OWL的程式

OWL 可以不要放. 不过无责任书评及读者来函都有点出正确学习方向的用
处, 最好还是要有. 毕竟任何 MFC 书, 包含侯书, 都无法像大卖场般,
<一次购足> 你所需的东西.

> 2. 侯先生在第一章中提出的Win32基本观念. 本来作业系统就是侯先生的专长, 因
> 此由他来提笔, 实在是最佳的范例. 可是这一章节只到达Jeffrey的水准, 并没
> 有Matt的水准. 也许是侯先生认为是基本程式观念的考量. 可是我还是以为读

以上的说法很怪. 大多数的人都知道 Jeffrey 的 Advanced Windows 仍是同领
域书籍的上上之选. Matt 在 Kernel 很专精, 但在 Anvanced Windows 领域中,
还是以 Jeffrey Richter 为大宗师. 以上说法似乎认为 Jeffrey 不及 Matt ,
事实上他们各有专攻.

> 3. 第二章, 侯先生提到C++的重要性质. 和侯译的C++物件模型比起来. 这一章只算
> 是C++的常识篇而已. 并没有触及太多的物件导向观念. 如谈encapsulation就没
> 有讨论到friend和pointer对封包造成的伤害. 也没有介绍C++的struct和class
> 具有同价观念. 更别说是interface和implementation的观念了. 说到继承也没
> 有区分什麽是class inheritance和implementation inheritance了.

MFC 书本来就不该写太多纯 C++ 的东西. 基本上如果不懂 C++ 应该看
C++ Primer 或 C++ Programming Language.

> 这本书虽然是一本相当用心的书, 但是倒不算是什麽很了不起的书. 它没有实作的
> 用途, 因为它所举的MFC Library实在太少; 它也不是Inside的书, 因为它的主题

掌握了MFC 精华, MFC Library 只要在 IDE 中用 Online Help 就可以看
懂了, 何需写在书中, 徒然浪费篇幅.

> 太广, 从C++, SDK, MFC....都没有专精的素求. 最後, 我认为这本书太不实际,
> 它不涉及网路, 证明侯先生对网路明白太少, 第二它不涉及OLE, 因为他在ATL上
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

前面说过, 网路及 OLE 都可以再写一本书了. 以上说法也很怪, 如果
有人用 "书中没有谈网路也没有谈多媒体设计" 来评论 C++ Primer
或是 Bjarne Stroustrup 的 C++ Programming Language 写得不实际, 你
也会很奇怪. 要学 TCP/IP 网路应看 TCP/IP 书, 要学 OLE , 就看
Inside OLE. 不要想用 <一次购足> 的心态来学习.

> 这本书之前侯先生就写过二本Visual C++物件导向的书, 这一本只是再创造而己,
> 没有其他新意.

我的感想是很多人喜欢<是己非人>, 藉着否定别人的成就来肯定自己!
虽然我不知道原作者是不是如此, 不过我还是觉得适时的肯定别人的
成就, 会对自己更有帮助.

我不否认我和侯俊杰认识, 所以也许评论不够中肯. 不过我已经尽量
以技术层面来探讨侯书的优劣, 不涉及私人感情. 我早年也曾经写过
书, 知道其中的难度. 对於侯书, 我一向是内举不避亲的.