评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>
侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了。
而李久进的<mfc深入浅出>,听说的人可能就少得多。原因听说是这本书当时没有怎么宣传,而自从1999年第1版后,似乎也没有重印过,现在市面上根本找不到,所以大部分人都不知道。我手里现在恰好有一本,是从图书馆借的。这本书全名为<mfc深入浅出——从mfc设计到mfc编程>李久进编著,华中理工大学出版。此书极佳!
我这本书是1999年9月第一版,印数居然只有5000册。这么好的书只印5000册,而市面上都让一堆破烂玩意充斥着……
这本书在写作目的上和侯捷的那本<深入浅出mfc>很相像。都是具体介绍mfc的原理和mfc的设计的。
看有的帖子说这本书难,这倒没有感觉到。当然,我看这本书的时候已经学完mfc的很多东西了,也看过侯捷那本。不过,这本书确实不大适合入门。而比较适合精通。
和侯捷那本书比起来,这两本书的风格很不一样。侯捷的那书的特点是剖了很多mfc的源代码,喜欢用代码说明问题,包括自己模拟mfc的方面实现一个类似的构架(什么什么仿真),而李久进的那本书不是这样,他用了很多的图表,具体介绍了mfc干很多事的时候的具体过程,比如mfc创建的时候及退出的时候具体的调用函数的过程(具体函数的调用关系)。这觉得这部分极为重要,这也就是我推崇李久进这本书的原因。而侯捷的那本书这部分内容非常少。这想,这可能是由于侯捷觉得,这部分内容不需要单独介绍,大家自己剖代码就可以解决问题。这确实不错,李久进的那本书中的内容如果自己剖mfc的源代码,内容都可以找到。但这是一个非常花工夫的事情,更不要说mfc的实际代码中要考虑各种各样的问题(保护,检查),代码的思路不可能非常清楚,这无疑增加了读代码的难度。和自己花时间一点一点剖mfc代码相比,看看这本只有266页的书无疑有效得多。
从内容上来讲,侯捷的那本<深入浅出mfc>更关心的是mfc的设计,或者说更像是想知道mfc是如何做到它所做到的东西的——从目的上说,是希望在了解了mfc的实现方法以后,自己也做出一个类似的东西来(你看别人的源代码的时候,就是这个目的)。而李久进的那本<mfc深入浅出>更关心的是mfc的使用,看完这本书,当你需要做某件事的时候,你会很清楚mfc是在哪个函数中完成这个工作的,你知道应该重载哪个函数,知道如何实现你的功能。但看完侯捷的那本书,你只是学到了方法,而按照侯捷的方法,你可能还得用半年时间才能剖完相关的代码,学到李久进的那本书中所提到的东西。
我确实非常推崇李久进的<mfc深入浅出>,但这并不意味着我贬低侯捷的那本书。其实,我也非常感谢侯捷的那本书,从这本书中,我学到了一个重要的学习的方法:就是自己追踪mfc的源代码,自己修改mfc的代码,实现自己的功能。这种学习的方法,使用编程工具的方法极其重要。我从侯捷的书中,学到了方法。而在李久进的书中,我学到了内容。但是真正到了你要用的时候,你不可能只用李久进的书中的东西就行了。你实际碰到的问题不会那么单纯,不会容易到你看看某个函数的流程图表就可以的程度。你还是需要自己动手,自己学mfc的实现,自己写代码——而这些东西,正是侯捷的书中可以教给你的。
你是希望要一桶鱼,还是希望学习钓鱼的方法——要一桶鱼可以解当务之急,学习钓鱼的方法却可以让你终身受益。而现在,我们有了两者兼得的方法——李久进的<mfc深入浅出>像是一桶鱼,而侯捷的<深入浅出mfc>就像是钓鱼的方法。看完两本书,两者兼得,何乐而不为呢。:)
这本书现在市面上已经无售了,但还好,这本书有很全的电子版本,从网上可以下载。我刚刚是从这个网址下到的这本书http://www.copathway.com/vchelp/archive.asp?type_id=68&class_id=1&cata_id=14&article_id=680,提醒大家注意,这本书总共14章,最后一章叫做“socket类的设计和实现”。网上常见的一个电子版本是380k左右的chm格式的版本。只有前8章。那个版本我觉得很不好,因为后面还有几章比较重要的。大家下载后要注意是不是全的版本。
好了,说了这么半天,不贫了。我也是看到csdn上另一个帖子http://expert.csdn.net/expert/topic/1144/1144689.xml?temp=.8551905,并今天下载到我找了很久的书,很高兴,发表些议论的。在那个帖子上,还有一些下载的网址,大家可以试试。最后,感谢将书上传的网友(虽然我不知道他是谁),并祝大家都学好mfc。
附:如果哪位网友知道这本书哪里还可以买到,望告知。原价28元,80元之内,我愿买一本。^_^
评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>的更多相关文章
- 快笑死,侯捷研究MFC的原因
与我研究VCL框架代码的原因一模一样:就是N年了,感觉自己还是没有掌握Delphi,惊叹别人各种各样神奇的效果,自己却不会,更不知为什么这样做,离高手的距离还有十万八千里.而且编程的时候,就像侯捷说的 ...
- <软件架构与设计模式>侯捷老师关于Adapter类在STL中的深入解析和模式探讨
题外话:侯捷老师难得一年就来上九堂课就要会宝岛,特此留念签名赠语及合照以自勉. 学海无涯,为勤是岸 <正文开始> 昨天晚上连上了3个小时的大课探究单单讲了Adapter一个类,幸运的是本 ...
- From COM to COM 侯捷 1998.06.12
摘要: 本文簡介 C++ Object Model 和 Component Object Model 的基本概念,並引介四本書籍: 1. Inside The C++ Object Model 2. ...
- 侯捷C++ Type traits(类型萃取
泛型編程編出來的代碼,適用於任何「吻合某種條件限制」的資料型別.這已成為撰寫可復用代碼時的一個重要選擇.然而,總有一些時候,泛型不夠好 — 有時候是因為不同的型別差距過大,難以產生一致的泛化實作版本. ...
- 侯捷STL学习(一)
开始跟着<STL源码剖析>的作者侯捷真人视频,学习STL,了解STL背后的真实故事! 视频链接:侯捷STL 还有很大其他视频需要的留言 第一节:STL版本和重要资源 STL和标准库的区别 ...
- list源码4(参考STL源码--侯捷):transfer、splice、merge、reverse、sort
list源码1(参考STL源码--侯捷):list节点.迭代器.数据结构 list源码2(参考STL源码--侯捷):constructor.push_back.insert list源码3(参考STL ...
- list源码1(参考STL源码--侯捷):list节点、迭代器、数据结构
list源码1(参考STL源码--侯捷):list节点.迭代器.数据结构 list源码2(参考STL源码--侯捷):constructor.push_back.insert list源码3(参考STL ...
- list源码2(参考STL源码--侯捷):constructor、push_back、insert
list源码1(参考STL源码--侯捷):list节点.迭代器.数据结构 list源码2(参考STL源码--侯捷):constructor.push_back.insert list源码3(参考STL ...
- list源码3(参考STL源码--侯捷):push_front、push_back、erase、pop_front、pop_back、clear、remove、unique
list源码1(参考STL源码--侯捷):list节点.迭代器.数据结构 list源码2(参考STL源码--侯捷):constructor.push_back.insert list源码3(参考STL ...
随机推荐
- 过目不忘JS正则表达式(转)
正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了.好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧. 为啥要有正则表达式 ...
- 在OSX狮子(Lion)上安装MYSQL(Install MySQL on Mac OSX)
这篇文章简述了在Mac OSX狮子(Lion)上安装MySQL Community Server最新版本v10.6.7的过程. MySQL是最流行的开源数据库管理系统.首先,从MySQL的下载页面上下 ...
- android项目 之 记事本(6)----- 加入手写
想必大家都用过QQ的白板功能,里面主要有两项,一个是涂鸦功能,事实上类似于上节的画板功能,而还有一个就是手写,那记事本怎么能没有这个功能呢,今天就来为我们的记事本加入手写功能. 先上图,看看效果: 看 ...
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
XML 介绍 <CustomersOrders> <Customer custid="1" companyname="Customer NRZBB&qu ...
- Java代码优化策略
1.生成对象时,合理分配空间和大小:new ArrayList(100); 2.优化for循环: Vector vect = new Vector(1000); For(int i=0; i<v ...
- 浅谈JDBC(一)
一.JDBC技术引言 1.什么是JDBC技术 提供了一套接口规范,利用java代码进行数据库操作. 2.JDBC技术的核心思想 对于程序员来说,代码访问数据库分为三个步骤:1.通过数据库的账号密码.2 ...
- C++类的封装_工程
一个C++工程 main.cpp #include<stdio.h> #include"Array.h" int main(){ Array a1(10); f ...
- js方法中的this
比如有个function: function ServiceMy(services) { //存放this,用于调试用 var tmp_this = this; this.services = []; ...
- 我的Python成长之路---第七天---Python基础(22)---2016年2月27日(晴)
socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- 浙江大学PAT上机题解析之2-11. 两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3. 输入格式说明: 输入分2行,分别在每行给出由若干个正整数构成的非降序序列,用-1表示序列的结尾(-1不属于这个序列) ...