《深入浅出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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm如何调用anaconda环境_pycharm怎么使用anaconda环境

    pycharm如何调用anaconda环境_pycharm怎么使用anaconda环境pycharm中添加anaconda环境无效本文是经过作者多次尝试最终解决掉的。1、先说说我自己在安装anaconda之前的环境配置:我的电脑本地上安装了python3.7.4和pycharm,平常学习都能正常使用pycharm。后来因为要做深度学习,不得不安装anaconda。2、我就想着直接在原来的基础上安装anaconda算了,到时候在pycharm中新增一个CondaEnviron…

    2022年8月26日
  • 兼容,原来在这里就已经開始——–Day34

    兼容,原来在这里就已经開始——–Day34

    2022年2月5日
  • c++ uint32_t_int32和uint32

    c++ uint32_t_int32和uint32文章目录使用int64_t形式代替基本类型使用原因stdint.h源码int32_t和uint32_t的区别size_t在不同机器中定义不同:参考文档使用int64_t形式代替基本类型我们都知道,C语言的基本类型就char,short,int等。但是我们在看其他源码时经常碰到int32_t,int8_t这种形式的定义,他们是什么呢。其实他们就是基本类型的typedef重定义。也就是不同平台下,使用以下名称可以保证固定长度。1字节int8_t——char2字节int1

    2022年9月20日
  • java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]

    java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]相关教程:1.说明离线地图开发环境支持谷歌地图、百度地图、高德地图等等所有常用地图类型,支持在局域网内的地图部署、二次开发。2.实现第一步:下载安装离线地图开发环境下载安装好之后,启动软件,如下图所示:①如果你的电脑连接到网络,这里可以直接点击【进入】;如果未能链接网络,请插上离线地图加密锁点击【进入】。②这里有离线地图二次开发的相关说明以及帮助信息。点击【进入】后,如下图:①:添加离线地图-…

    2022年9月20日
  • IntelliJ IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行

    首先,确保IDEA软件正确安装完成,Java开发工具包JDK安装完成。IntelliJIDEA下载地址:https://www.jetbrains.com/idea/download/#section=windowsJDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.htmlIDEA…

    2022年4月13日
  • html中图片连续滚动代码,[转载]网页设计中的图片连续滚动效果——代码「建议收藏」

    html中图片连续滚动代码,[转载]网页设计中的图片连续滚动效果——代码「建议收藏」style=”overflow:hidden;width:500px;”>border=”0″>id=”butong_net_left1″valign=”top”align=”center”>border=”0″>src=”src=”插入需要滚动的图片”>src=”插入需要滚动的图片”>src=”插入需要滚动的图片”>src=”插入需要滚动的图片”&gt…

    2022年7月18日

发表回复

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

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