《深入浅出MFC》观后有感

《深入浅出MFC》观后有感    《深入浅出MFC》观后有感本文原创,如需转载,请注明出处!     好几年前我曾经买过这本书,知道它是本好书,在匆匆走马观看一遍后,便将它束之高阁,后来有友人借之,不想几经辗转,最终不知我的这本好书花落谁家了。这段时间有空,得知一位友人也买了此书,便借来再读。再读的同时,回想这几年使用MFC的经历,顿觉获益良多,深受启发,遂成此文。          翻开此书,到内容简介后面一页

大家好,又见面了,我是你们的朋友全栈君。

    《深入浅出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的内部情况,而不是只讲述操作过程的书,真的没有几本。期望大陆能多出这样的好书,也期望侯老师能笔耕不辍,再出佳品。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151149.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PL/SQL语句_sql语句declare用法

    PL/SQL语句_sql语句declare用法因为SQL只能访问、操作数据库,却不能进行程序设计,而OraclePL/SQL是一种高级数据库程序设计语言,该语言专门用于对ORACLE数据库进行访问,并且可以进行过程处理。*注:在PL/SQL中只能用SQL语句中的DML部分,不能用DDL部分,如果要在PL/SQL中使用DDL(如CREATEtable等)的话,只能以动态的方式来使用。**1.DML(datamanipulationlanguage)数据操纵语言:比如SELECT、UPDATE、INSERT、DELETE

    2022年8月20日
    7
  • WEbService服务端-用Axis客户端测试遇到的问题Exception in thread “main“ AxisFault

    WEbService服务端-用Axis客户端测试遇到的问题Exception in thread “main“ AxisFaultExceptioninthread”main”AxisFaultfaultCode:{http://schemas.xmlsoap.org/soap/envelope/}Server.userExceptionfaultSubcode:faultString:org.xml.sax.SAXParseException:Prematureendoffile.

    2025年11月2日
    3
  • 非单页模式下 修改头部显示效果

    非单页模式下 修改头部显示效果

    2022年3月7日
    319
  • C# 深拷贝_python的浅拷贝和深拷贝

    C# 深拷贝_python的浅拷贝和深拷贝C#中的浅复制和深复制示例在本文中,我将通过示例讨论C#中的浅拷贝和深拷贝。这是我们上一篇文章的续篇。因此,在继续本文之前,请阅读我们以前的文章,其中我们使用示例讨论了C#中的原型设计模式。浅复制和深复制在复制原型设计模式中的对象中起着重要作用。因此,在本文中,我们将通过示例讨论什么是“浅复制”和“深复制”以及它们之间的区别。了解C#中的浅表复制:如果是“浅复制”,它将从现有对象创建新对象,然后将当前对象的值类型字段复制到新对象。但是在引用类型的情况下,它将仅复制引用,而不复制被引用对象本身

    2022年9月29日
    3
  • pycharm安装教程2021.2.2_eclipse环境配置

    pycharm安装教程2021.2.2_eclipse环境配置在PyCharm中如何配置Anaconda3环境软件:PyCharm2020.2.2×64;Anaconda3(64-bit)步骤如下:1.File→NewProject2.选择Newenvironment,Conda选项我的是默认选好的,没有更改3.Create即可,下一次创建新的项目默认使用Anaconda环境…

    2022年8月29日
    4
  • html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]

    html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]html导航栏下拉菜单如何制作发布时间:2020-09-2615:29:13来源:亿速云阅读:88作者:小新小编给大家分享一下html导航栏下拉菜单如何制作,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!我们要说的是html导航栏下拉菜单的制作,先看一个完整的实例代码:.dropdown{position:relative;display:inline-block;}.drop…

    2022年5月28日
    217

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号