现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

经验分享:如何学好MFC

2012-05-02 19:40 工业·编程 ⁄ 共 2023字 ⁄ 字号 评论 26 条

1、如果你真心想学好Windows,不要心猿意马的话。我觉得只需要一本书,你能把它吃完,MFC神马的一笑而过吧!《Windows程序设计》英文名《Programming Windows》目前第五版珍藏版,清华大学出版社出版,微软5人以上的翻译团队翻译 。。。作者:Charles Petzold。1K+的页数,MFC只是将windows api封装了一下,所以搞定这本书,MFC的一些实现机制你就懂了。

2、扎实学好C/C++,一定搞清WINDOWS的消息机制,MFC尽管很庞大,但抓住其主要框架和特点还是易于学习,所谓抓住框架,就是能较好开发诸如系统底层、通讯、ADO、多线程、多进程、图形图像处理、DLL/LIB。

3、首先必须会c和c++,然后要知道windows API,如果对这些了解不好的话,很难开始的,就像空中花园,各种窗口弄熟悉,知道常用的mfc类,如何封装windows API,一个mfc 程序的生与死流程,消息映射机制,可以看《mfc 深入浅出》《visual c++ mfc 编程实例》,前者有点难,但确实很好,对整个mfc 机制讲的很透彻,后者有很多实例,再去网上找个mfc类库手册碰到不会的类就查查,刚开始很难,随着学习对机制流程慢慢熟悉,对类慢慢熟悉就会好起来。

》》》程序员练级葵花宝典

4、mfc开始就是要从熟悉每个控件的使用开始。

5、第一步,先了解windows的控制台程序,也就是直接用C和windows的API编写的程序,对windows的窗口函数,消息循环等有个了解;
第二步,学习C++语法以及面向对象的编程方法,建议看C++ primer 第五版;
然后,在学习MFC,了解整个framework的结构,强烈建议看看孙鑫的C++视频(主要讲mfc的),我就是之前走了不少弯路,看了孙鑫的C++视频觉得非常好,相见恨晚啊,还有侯捷的深入浅出MFC。

6、买本有实例的书回来看, 第一步,首先会建立MFC应用程序吧,然后根据实例慢慢打,如果简单的实例能自己照书本打运行成功了,那就在打2次,直到不需要看书就能把这个实例打出来,此外还需要自己多多的总结,为什么会用这个语句什么的,还有为什么这个语句写在这个地方。实例练多了,MFC玩久了,自然而然就能领悟到MFC的架构了,那时候做什么都是比较顺手的。

7、首先不能把MFC和C++对立起来了,MFC只是C++的一个部分!学好C++或者学好C++中的MFC编程的最万精油的办法就是多看例题,然后多练习,从易到难!MFC一个很好的地方就是它把函数所共用的函数骨架,一些共用的类都给你自动生成了,因此学习MFC编程的另外一个“捷径”就是你不要过多的去想怎么想那些可以随处copy的类,你要做的就是多去想怎么编写出实际要求或要实现具体功能的那些函数代码,这是编程者必须要做的!其他共用的代码就是不断的被人复制粘贴!

8、如果你有了C++的基础了吧,至少类,虚函数,派生等等之类的C++基本概念你要掌握的,然后你就可以开始学习MFC了。我一开始是从候杰的《深入浅出MFC》开始学习的,感觉还不错,特别是前面的6个仿真MFC的程序,还是很不错的,不过他的书看起来比较的累一点,很多东西看着有点云里雾里的。另外还有一本是《MFC windows 程序设计》也是很不错的,我也看过,可以当作工具书。当然《MFC技术内幕》也挺好的!

9、打下好的C++基础对学习MFC有很大的好处,你要明白,学习编程最主要的是:

》》》如何学好C++语言

    1)学习计算机系统的运行原理。你只有在较为深刻地了解了计算机系统的运行原理,才可能会理解代码为什么要这样写,理解一些低层的错误。在此推荐一本书,《深入了解计算机系统》,不厚,才800多页,两个月读下来应该不成问题。它能让你在程序员的角度上,对计算机有个深刻的了解,很不错。

    2)了解点操作系统的原理对编程也是有好处的。说实话,孙鑫的这个教程对操作系统的底层原理涉及了一点点,但是很不够,你应该了解一下Windows操作系统的底层原理是怎样的,虚拟内存是个什么东西,进程是什么,等等。同样,《深入了解计算机系统》也对操作系统的一般性原理讲了一些,刚刚够,不过建议你读读《深入解析Windows(第四版)》。

    3)当然,学习MFC也许不多需要对API有多了解,但是了解API,对了解MFC的原理也是有好处的,这样你学起MFC就不会常常地一头雾水了。能力够的话,再加上本罗云彬的《Windows环境下32位汇编语言程序设计》,对你了解Windows的原理有很大的好处。

    总得说来,就是:《深入了解计算机系统》、《VC++深入详解》、《Windows环境下32位汇编语言程序设计》、《Windows核心编程》、《深入解析Windows系统(第四版)》这几本书,应该是你学习编程的一个有效的过程。

10、做项目是学习的最好方法,在项目中实践,同时参考别人的优秀代码。拿书本看没什么效果。

目前有 26 条留言    访客:26 条, 博主:0 条

  1. 爱求索 2012年05月07日 6:13 上午  @回复  Δ21楼 回复

    学 VC 或 windows 编程分三 STEP:1. 只 SDK 提供的 Function 作开发,不要Object, 你会知 How to handle Message. 2. MFC 编程, 用 CEdit 等开发.3. 再用 VC如果你有一个别人的好程序, 不妨自己跟着他的思路,从小到大自己完成一遍。

  2. 爱求索 2012年05月07日 6:15 上午  @回复  Δ22楼 回复

    对于想学游戏编程的朋友注意:从现在起,你不必去学什么MFC了,相信我,那东西除了让你头疼一点用处都没有。游戏都使用Win32 SDK编出来的。现在,你要学的是DirectX。我推荐老王翻译的DirectDraw文档(www.imagic3d.com),前面有一些老王自己写的基础知识,很适合入门, 在此特别感谢老王的辛勤劳动。我还买了一本《DirectX 7 速成教程》,机械工业出版社出版,封面封底都是红色。除了翻译惨了点还算不错,介绍的挺全面,还有一些游戏编程基础知识。如果你想图省事,可以考虑用云风编写的风魂游戏库,很方便的(www.codingnow.com 对云风的辛勤劳动表示感谢).不过我仍然建议至少了解一下DirectX.这里说一下,很多朋友抱怨找不到有关DirectX的书籍,我告诉你,别去编程书籍里找,去多媒体制作书籍那找,还要把眼睛瞪得大大的、圆圆的。Director.. Director.. DirectX!!!知道了吧,书店工作的人眼神都不大好,我也是有一天没事瞎转才发现的,吓了我一大跳。发现这个秘密后我发现其实有不少关于DirectX的书,只是一般人找不到罢了。学会了DirectX,就可以开始奋斗了,剩下的问题就只有积累经验了。

  3. 爱求索 2012年05月07日 6:16 上午  @回复  Δ23楼 回复

    对于志向是应用软件的朋友,打好了基础,现在进军VC的障碍都已扫清了。不过还是应做好充分的思想准备,事情不会那么顺利的。刚开始,你就要面对一个瓶颈,大量的紧密关联的知识,使你必须一下理解一个整体,而很难一点点来。可以说,学VC最难的就是刚开始。情况有些类似于你第一次创建窗口时面对的那长长的程序,只不过更糟糕就是了。很多人就是在此被一大团知识噎着,放弃了学习。事实上,这几乎是Windows编程的一大特点,在WIN32编程时你就应当有所体会,而DirectX和COM都有类似问题。记住,一定要坚信:突破了这个瓶颈之后便是一片海阔天空,而有着扎实基础的你是一定能闯过去的。
    我的建议是,不要等彻底弄明白一句才看下一句,而是知道好像怎么回事就向下看,实在看不懂也硬着头皮往下看,等能比猫画虎的作出个菜单、对话框时便回过头再看一遍,几遍之后应该就可以大概明白MFC程序的运作了。注意:这里有个关键,一定要用心体会面向对象编程的精神,努力将眼前的程序与你之前所学的知识联系起来。通过比较成员函数和对应的API函数间的区别,尝试去理解MFC是怎样封装相关的API的。例如,相当多的类将句柄封装了起来,在传递参数时加以省略,这就是一个很重要的特性。MFC中有许多的宏,看起来很奇怪,但你不必理会其实现方法,只要知道如何使用便可,这点也很重要。还有,千万不要过于依赖ClassWizard,对于其生成的代码要自己进行分析,偷懒就不能真正理解MFC。

  4. 爱求索 2012年05月07日 6:17 上午  @回复  Δ24楼 回复

    这里我介绍一种学法,不过学法这种东西因人而异,所以还要根据个人的情况决定。开始时,教程让怎么办就怎么办,比猫画虎的作出个菜单、对话框,然后试着添加控件。等能不看教程便做到这些时,开始逐字逐句的试着理解MFC程序的组织。若看不懂就跳过看下面的。就这样一遍一遍来。如果觉着头大就先歇上两天,等清醒了再接着来.最好在这期间多找些介绍MFC框架的文章。注意:先不要碰有关文档/视结构的东西,否则你会更头大。然后便可试着写个定时器、名片夹之类的小东西,熟悉一下各种控件的使用。

    突破了开始的瓶颈之后再学下去便会越学越容易,因为你可以一点一点的积累知识,而不用担心被噎着了。再过不久,你就不得不开始使用API函数完成一些功能,如在系统托盘加图标,自画列表框等。这时,你也会体会到学习WIN32编程的好处了,没学过的人很可能就此卡壳。

  5. 爱求索 2012年05月14日 11:24 下午  @回复  Δ25楼 回复

    MFC本身就是MVC架构下的一个框架,一般的应用程序也都是基于这个架构,程序员要做的是抽象出数据和控制以及显示,说白了也就是对M,V,C三个方面分别进行抽象,抽象M和抽象C是超脱于这个框架的,分别对应于抽象数据结构和抽象界面控制,另外抽象V也就是抽象视图,这个与框架是相关,也称为抽象显示方式
    然后是M,V,C三者之间的关联,这是很重要的问题,这个在UML和模式应用这本书里面称为GRASP,如何去分配他们的职责,这本书介绍是以职责驱动的方式来划分。(这本书相当不错,通过一个完整的应用程序系统教你如何去做对象分析和对象设计)。
    以上是我对mvc架构的理解,适用于一切基于这种架构的应用程序。

  6. 爱求索 2012年06月21日 8:13 下午  @回复  Δ26楼 回复

    vc做程序最重要的就是小心,小心再小心,每做一步自己都要多运行几遍,分别在debug,release模式下运行运行,看看有没有内存泄漏,越界等错误,等到最后才发现那就惨了

给我留言

留言无头像?