近来,在论坛上面几乎每天都可以看到很多的人提出如何学习MFC,学习MFC的确不是一件很容易的事情,加上成千上万的API函数和微软的一些资料的保留,学习MFC就变得更难了。不过我认为难在入门,入门后就慢慢觉得得心应手了。下面是一些先辈们学习过程中总结出来的方法及学习感受,今天把它们整理出来,供大家参考。
正文:
我记得我在网上是这么说的:先学win32的SDK,也就是API,再学MFC,这么一来呢,就先有个基础,MFC是API的封装,如果API用的熟了,MFC上手就轻松的多了。
这是昨天一个网友提出和你同样的问题。我这样说的。你说推荐的书籍呢,那倒真是有不少好书非常值得看看,学习c++的有《c++编程思想》,学习api就是win32程序员参考手册,一般叫sdk。学mfc呢,那就更多了,书店里的不少书都可以拿来看看,看的多了,自己也就知道什么样的书最适合自己,不同时期欣赏的口味都不同的。比如说刚开始,就特别想找vc如何使用的书,刚接触win32编程就想如果能有手把手那样的教就好了。这些书都有的。我的习惯就是,多看书,然后才有鉴别,知道什么样的书算是经典,什么样的书尽管没多大用,但是对特定的人,特定的时期,特别有用。
买更多的书,看更多的书其中《Visualc++技术内幕》和《深入浅出MFC》不可不买中国人学不好VC的原因很简单:英语非常差,不会看英文版的MSDN/CD,大学里的教育全是垃圾,设备又差,许多学VC的家伙不懂MASM,连WINDOWSMessagecyclesystem都不了解,学什么学不过不要紧!据我所知,全球使用C++的人不过30万,且多数是用BCB(用控件来写容易啊!!!)要知道,根据MS的资料,它出的书最Highclass的一类只不过卖出20万左右,(ps:Iforgotbookname!!!)要想学好VC,先学好英文,再去Codeguru.com之类的网站D/Lsourcecode!不要买国人自己编写的书(翻译的除外)最好是MS出的书,既然是用MS的工具,这是当然的,还要定期买MSDN/CD,MS的人开发人员每人一套!!!!要谈的太多了,一句话:学好VC=英文好+基本功好+勤奋+聪明.少一不成的啊!!!!
我觉得初学者先不要看MFC,API,Windows编程之类的东西,最重要的是先弄懂什么是面向对象,什么是类,要是弄不懂类拿学起来就真的累了!
1.先找一些傻瓜书,一步一步教你,CLASSWIZED,单击,双击,右键...,...加入函数代码....编译,运行...(真正的傻瓜!)
2,分析代码,头文件,消息宏等,找来书慢慢研究吧.哦,这函数有这些参量.....哇,老兄,WINMAIN()是做什么的指针,类,继承,重栽,折构......
3.书书....<>,95元,<<深入C++类库编程...>>,SAME图书,什么,105元...清华,希望,机械,电子,什么出版社......
说起来我学VC也有些年头了,想当年玩了3年游戏却在大四为了毕业设计开始接触Windows编程。没办法,天生的手短心长,导师原来要我用DOS环境的。偏偏一开始有抱的是MFC,有一点C++基础的我看得是两眼发黑。当然,设计是泡汤了,还好导师放我一马。
工作以后才切身感受到,学Windows编程是要从API,从SDK玩起的。这还是我当年去一家台湾游戏公司面试的惨痛教训。我那个时候因为默不出一个完整的WinMain()和WindowProc(...)WindowsSDK程序架构惨遭淘汰(其实现在大多的Windows游戏还是用SDK的)。
还有,就我觉得,语言这个东西其实就象老妈厨房里的各种菜刀,各有千秋的。人天生的对东西会产生偏好,但拿水果刀切菜和拿大菜刀削水果是一样吃力的。我以前也认为天下有了VC就已足够,可现在两样。
有人说过,存在的就是合理的......
各位友人,我觉得学VC,熟悉C++的面向对象与WINDOWS编程技术是必要的.另外多看看别人的源代码,弄清程式所来龙去脉也,弄清程式的运行机制格外重要.至于你不太熟悉API,我看这并不重要,因为这么多API,试问谁能记这么多,不知道的查MSDN.初学者切莫心浮气燥,循序渐进,相信他日
你也是VC"高手".
不过,想精通VC还没有这么简单,我以什么VC,VB,BCB...
只不过编码工具,大家不必拘于此.VC确实是一把好剑,像独
孤九剑也是一把剑,但没有一点内功,这把好剑不是那么好用的.
内功=算法+数据结构+编译原理+*作系统原理+软件工程+英文
有一本书很好《WIN32程序员参考大全》即可了解WINCSDK,又可以了解WINDOWS,一举两得。就是有好几本。可以到VC知识库网站的电子图书栏目下载。
我认为需要三本书,
1<>美JeffreyRichter.清华大学出版99元
2<>美CharlesPetzold北京大学出版160元
3<>美JeffProsise是英文版的北京大学出版198元
还有更好的选择吗?我不相信!
VC进阶:
1.C语言;2.C++,OOP;3.Windows运作机理,SDK编程;4.MFC类库,应用程序框架编程;5.ActiveX,ATL,COM……每步骤通常需要6个月,最快也得3个月,诸位同意否?
VC入门的一条路
学编程急不得,上来就学VC肯定碰一头灰,说VC难就难在这点上了。如果硬上,意志坚强的话也许能挺过来,但也是会缺乏后劲,不得不回过头来补习基础知识。意志不坚强的话,很有可能就此放弃了,并留下一个VC难得不得了的印象。其实,只要踏踏实实一步一步来,VC也就是很简单点事。在这里我说一下,如果你还只是一个初中生,那么你就应当仔细考虑一下了。首先,限于你的知识和思维能力,学学C语言还应该没问题,但要学VC是要下相当大的功夫的。而且,你现在学到的东西将来一定会过时,所以不如把精力放在算法的研究上,毕竟这些东西永远都不会过时。
我觉着如果走对路子,入门VC,一个暑假应该够用了。
虽说学VC并不是传说的那么难,可不下些苦功夫是学不成的。在学VC前,你必须确定,你是因为热爱编程才学VC的,而不是出于炫耀或其他。否则,恐怕你坚持不到胜利的那一天。
对于首次接触编程的同学,我建议最好先学一下QuickBASIC(DOS里就有带,就是那个QBASIC.EXE),不用多学,知道什么是整型什么是浮点,以及DO...LOOPFOR...NEXT等最基本的知识,能算个阶乘,求个积分就行了,关键要明白计算机是怎么执行命令的,对编程有个感性认识。如果你对自己有自信,也可以直接学C++,应该也不会多费太多事。不过我觉着因为有很多资料是FORVB的,并且网页编程常用VBScript,以后你也很有可能要用到VB,所以了解一些BASIC对以后也是有帮助的。而且如果只是要算个小题用QB比VC、VB之类方便多了。(找个人教一两天应该就能搞定了吧)
之后我建议找本初高中信息学奥赛的书(有些奇怪吧)。这些书里讲解了基本的算法,写的却比较通俗,没什么高深的数学知识,容易理解。这些东西在数据结构课程中有系统严密的讲解,所以也可等以后再学。但我觉着现阶段写一些小程序,实现些常用算法对自己的思维是很好的锻炼,对以后的学习大有好处。我想,能排排序,求个八皇后,算个汉诺塔,再知道深、广度优先搜索就可以了。
如果你已经有一些编程的基础知识了,自然就可以跳过以上两步。
等你对编程有一定的认识后,就应该开始进军C++了.注意,是C++而不是VC,这两者根本不是一码事!别买VC入门,你肯定看不懂!C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础上。
我觉着比起许多花花绿绿的大全、宝典,不如买本大学的C++教程(注意:别买等级考试的教程,那是应试用的),那些教程大都经过反复锤炼,比较系统,很有含金量,有不会太贵。这里我暴力推荐由清华大学出版社出版的一本《C++程序设计教程》,封面是红色的,封底是黄色的,看起来很朴素,主编是钱能。这本书简直是好的没法说,还便宜(39.5元)。这本书不但告诉你语法,还告诉你为什么要这样规定语法,看完之后,你会觉着那许许多多的规定是理所当然的,根本不用费心记,不但不枯燥,反而会使有一种美感。书中还有许多实际编程时应注意的问题,很有价值。这本书还配有《实验指导》,和《习题集》,不过对于有一定编程经验的人应该是用处不大,所以我没买。除了这本书,我建议再买本关于传统C语言的书,要着重以下几个方面:编译预处理、typedef的使用,位运算,标准库函数的使用(最好有一个比较详细的列表,用的时候好查)。
C++的标准类模板是个不错的东东,不过对于学习MFC却没有帮助,原因是MFC太落后了(^_^),可以先放一放,要不要学等搞定MFC时再作决定。虽然我没怎么学过,不过觉着它挺不错,而且代表了一种发展方向。虽然学着费劲(那东西几乎没一点C++的样子,简直是在学新语言),但掌握它可使编程轻松不少。
对于想学游戏编程的朋友注意:从现在起,你不必去学什么MFC了,相信我,那东西除了让你头疼一点用处都没有。游戏都使用Win32SDK编出来的。现在,你要学的是DirectX。我推荐老王翻译的DirectDraw文档(www.imagic3d.com),前面有一些老王自己写的基础知识,很适合入门,在此特别感谢老王的辛勤劳动。我还买了一本《DirectX7速成教程》,机械工业出版社出版,封面封底都是红色。除了翻译惨了点还算不错,介绍的挺全面,还有一些游戏编程基础知识。如果你想图省事,可以考虑用云风编写的风魂游戏库,很方便的(www.codingnow.com对云风的辛勤劳动表示感谢).不过我仍然建议至少了解一下DirectX.这里说一下,很多朋友抱怨找不到有关DirectX的书籍,我告诉你,别去编程书籍里找,去多媒体制作书籍那找,还要把眼睛瞪得大大的、圆圆的。Director..Director..DirectX!!!知道了吧,书店工作的人眼神都不大好,我也是有一天没事瞎转才发现的,吓了我一大跳。发现这个秘密后我发现其实有不少关于DirectX的书,只是一般人找不到罢了。学会了DirectX,就可以开始奋斗了,剩下的问题就只有积累经验了。
对于志向是应用软件的朋友,打好了基础,现在进军VC的障碍都已扫清了。不过还是应做好充分的思想准备,事情不会那么顺利的。刚开始,你就要面对一个瓶颈,大量的紧密关联的知识,使你必须一下理解一个整体,而很难一点点来。可以说,学VC最难的就是刚开始。情况有些类似于你第一次创建窗口时面对的那长长的程序,只不过更糟糕就是了。很多人就是在此被一大团知识噎着,放弃了学习。事实上,这几乎是Windows编程的一大特点,在WIN32编程时你就应当有所体会,而DirectX和COM都有类似问题。记住,一定要坚信:突破了这个瓶颈之后便是一片海阔天空,而有着扎实基础的你是一定能闯过去的。
如何学习vc++(vc的用处)
1vc的用处
我感觉下面一些领域比较适合于用vc:操作系统编程,game,图形设计,corba编程,com编程,网络编程。
其实,VC做数据库也不是不合适,关键在于你要抛开所谓的例子程序,直接从底层(SQL)做起。那么,你会有一种天高任鸟飞的感觉:爽。数据库与界面全部在你的控制之下。
VC可以写WEB上的控件。
VC可以开发优秀的基于通信的程序。
VC可以开发高效灵活的文件操作程序。
VC可以开发灵活高效的数据库操作程序。等等等等
VC是编CAD软件的唯一选择!!!包括AUTOCAD,UG的二次开发。
小到只是一个Windows的标准界面那象这样的程序用VC++确实大才小用了,因为有比VC++开发界面更快的编译系统,但如果这个界面极其复杂复杂到要用很多的数学方法(例三维游戏的)那也要用到VC++才能搞定
就我使用VC++的这几年经验来看,VC++非常适合于系统程序设计,正如C语言是Unix的标准系统程序设计语言。
在多线程、网络通信、分布应用方面,VC++有不可比拟的优势。当然随着系统程序开发的机会越来越少,VC++的应用领域的确会逐渐缩小。
2如何学好vc
2.1
先期条件:英语要好看懂MSDN要学好vc,先学好英语,再去codeguru.com之类的网站d/lsourcecode。学好vc=英文好+基本功好+勤奋+聪明。
1先学习C或C++,在windows的console环境下编写不太深入涉及API的程序;尤其封装,继承,多态一定要精不要让vc的各种特性分散注意力。这一阶段,可以把重心放到研究算法上.
2在基本上掌握了语法之后,开始接触简单的系统API,学习Windows的编程原理和机制;先了解Windows系统的消息机制(多任务,消息映射等)。一开始用基本的SDK形式来开发几个程序作为入门(WinSDK编程就是直接调用Windows的API进行编程)(SDK全称是SoftwareDevelopersKit,意思是软件开发工具箱)(API全称是applicationprograminterface,意思是应用程序编程接口)。开始进行WinSDK编程用C语言最好,可以撇开C++的特性专心熟悉一下Win32编程的思路以及了解windows的消息运行机制。可以编写简单的菜单程序,可以简单地在WM_PAINT下操作GDI函数当你可以熟练的使用C语言进行WINDOWS程序设计了,你可以尝试面向对象的方法了。
3用MFC来开发程序(MFC全称MicrosoftFoundationClasses,是把WinAPI进行封装的类库,它是一个类的集合,通过覆盖WinAPI,为编程提供了一个面向对象的界面。它使windows程序员能够利用C++面象对象的特性进行编程,类似BCB的OWL,Delphi的VCL组件。它把那些进行SDK编程时最繁琐的部分提供给程序员,使之专注于功能的实现。你不妨把它想象成类似TC提供的函数库吧。)。开始学习MFC,可以从Steptourist学起,看MFC的源代码,理解几个关键的宏的定义与实现,特别是MESSAGEMAP。在学习的过程中为了给自己增加点挑战,尽量不要使用resourceedit,试着自己编码实现控件的创建,消息的响应。再就是看自己的造化了,动手做一些小工具,特别是自己平常需要的,对自己的提高也应该是很有帮助。并选择发展的方向.如果你有一个别人的好程序,不妨自己跟着他的思路,从小到大自己完成一遍。
4到了一定程度,一定要学ATL,OLE/COM。需要实际项目的磨练研究OLE/COM技术。COM
/ActiveX技术是MS的核心技术,只有彻底洞察其理论精髓才可以体会现在的操作系统的技术趋势,以不变应万变。从1998.3-1998.5,我基本上是每天攻读八小时VC,包括看书和上机。那时正上大三,精
力充沛,受的起没完没了的失败和痛苦,终于在五月某一天的一节“汇编语言”课上突然想通了,立刻逃课去上机。就这样我入门了。之后我也象大多数的人一样学习它的所谓GUI,doc/view结构,打印之类。有一天醒来我突然想:我学这些干嘛吗?朋友!惊醒呀!人的精力是有限的,正所谓“术业有专攻”,VC说到底,它也是一个工具,学会使用这个工具并不是目的,而仅仅是开始!于是我开始寻找我的方向。综合我的方向有:
1.网络编程。主要是基于TCP/IP的Winsock编程,已完成一个FTP的客户端编写,正在写一个FTP服务器。
2.通讯编程,主要是串行通讯。
3.三维动画,主要是用OpenGLAPI,一般用来写界面。我的毕业设计就是以2和3为基础。我的一些意见:不要对VC控件抱太大希望,除了基本控件,使用其他控件会使你比用API还繁;尽量使用MFC而不是API;尽早定位自己,寻找方向,不要什么都学,人贵专攻;要了解消息机制,多线程和同步机制,更有回叫(CallBack)机制等,这是VC程序员的基本知识//WINDOWS和UNIX操作系统都是复杂的多任物系统,提供了一大堆应用编程接口(API,通常是C语言的函数)程序员使用c语言调用这些API便可以开发该系统下//的应用程序了。这与dos时代的编程接口是不一样的,那时侯的函数库是由开发环境提供的(如TurboC),不具有很好的封装性和设备无关性。每当新版的//WINDOWS操作系统发行,便会提供一个相应的plantformSDK(软件开发包),开发者可以用SDK编译C程序。//vc的核心就是MFC,MFC是个C++类库,就象结构化程序设计时代的C语言函数库一样,给程序员提供了丰富的编程接口,简化了程序的设计。而MFC就是直接把//WINDOWS的C语言编程接口API函数用C++的类封装而成!这样既实现了面向对象的编程思想,又直接使用了WINDOWS的原始编程接口,代码的效率是最高的//
1。Window是由个许多DLL搭起来的系统的总称,开发Window程序就是如何调用这些DLL,对于C程序员,它提供了.h/.lib,这些东西和一些文档就构成SDK,DDK。//。。他们在任何支持DLL调用的开发环境中都可以使用(即函数指针)。
2。通常SDK指与Window核心
调用有关的。。。但并不是专用名称。也用于其他地方//VC只是一个编程工具,就如BC、BCB、Delphi一样,其实对于编程最根本的就是三个方面,语言、开发包、操作系统API,他们三个方面应该说是相对比较独立的//。VC是MS开发的,所以针对的是windowsapi,你可以不会C++,也可以在VC下用C写出很优秀的程序,当然如果你比较熟练C++,并且熟悉开发包MFC的话,工作//可能要轻松不少。所以在我看来,学习的过程可以是这样的,1、先学习C或C++,在windows的console环境下编写不太深入涉及API的程序;2、在基本上掌握了//语法之后,开始接触简单的系统API,学习Windows的编程原理和机制;3、在可以编写简单的菜单程序,可以简单地在WM_PAINT下操作GDI函数后,开始学习MFC//,可以从Steptourist学起,看MFC的源代码,理解几个关键的宏的定义与实现,特别是MESSAGEMAP。在学习的过程中为了给自己增加点挑战,尽量不要使//resourceedit,试着自己编码实现控件的创建,消息的响应。再就是看自己的造化了,动手做一些小工具,特别是自己平常需要的,对自己的提高也应该是很有帮助。
学好VC++的十大良好习惯
每到年底各大媒体就争先恐后热火朝天地搞总结,什么十大人物,十大品牌,十大美女,十大帅哥等等五花八门乱七八糟的让人充满好奇充满怀疑,这事确实让人有点郁闷,就如同男足国家队的国产教练如沈墙扶们每一次踢球失败后都要说这么一句:我们回去后要好好总结,下次会打得更好!这话听了几十年了,耳朵都生虫了,但还是无法看到中国猪球队有象人样的表现。因此,总结在某一程度上来说只不过是一种形式罢了,总结不代表就能改过原有的不足,也不代表就能进步了,甚至有点俗不可耐,尽管如此,阿蒙亦明知故俗,前人说过了入乡了就要随俗,因此你生活在这种环境里,你无法对这些无聊无趣的东东置之不理,除非你是天才,天才往往在非天才的人看来是很怪异的,处处与现实格格不入,可阿蒙不是天才,所以还得赶快总结,要不就离题,又被大家骂了,:)
(一)充分利用MSDN,因为我个人觉得它胜过任何一本编程参考书;
MSDN是Microsoft当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据,让您随时拥有与全世界菁英同步的技术,掌握最丰富的程序开发资源。我经常收到很多朋友的EMAILS,他们所提的问题往往都非常的简单,MSDN完全可以解答这些问题,但他们好象不太喜欢用,这是让我郁闷的地方,是因为英文不好呢,还是没有学会充分利用各种资源来解决问题的方法呢?
(二)提高英文水平,养成多上英文网站多看英文资料多买老外原版英文书;
有关程序员与英文水平的讨论已太多太多,我个人认为要成为程序员,高中的英语水平够了,甚至不懂英语的一些人,也同样可以成为较好的程序员,因为开发工具的发展将是越来越傻瓜,但如果你是仅仅满足于能运用某种工具开发某个软件模块,那是没话说了。真正热衷技术肯干钻研乐于接受挑战的程序员是不满足于现状的,他们总感觉有太多的未知,于是总在不停地学习,如今信息技术发展得太快,而大部分的技术最先出现的时候都是英文版本的,要几个月或者几年以后才有中文版本的书出来,因此要想跟上步伐,一定要努力提高自己的英文水平,这样才能同步跟上信息技术。你可能担心自己的英语水平不行,没关系,刚开始多查字典,“万事开头难”,必须有持之以恒的精神,不久你就会发现计算机英语其实很容易的。何况很多
(三)加强自我管理,善于作自我总结,分析自已的优点及缺点。
中国境内百分之八十以上的领导人在百分之八十以上的场合的讲话中都有类似的观点,所以在这里我是不多说了,反正这一条用在什么行业什么地方都不会有错的,人生最大的敌人不是就是自已吗?管好自已认清自已,那还有什么搞不定的?
(四)养成良好的文档习惯
(五)代码风格要规范,严谨,效率要高。
这个不用说了,所以一定要记住了!不过,这一点有时可能与人的性格有关,如果你是经常丢三落四经常胡子长长经常钮扣扣错经常吃个快餐要一个小时的人,那你在CODING的时候可千万要注意了,CODING是CODING,生活是生活,不要写出的程序也是那样就不好了!
(六)掌握好跟踪调试技巧。
跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必要的调试策略及技巧却可以使这些工作变得轻松起来。强烈建议你去看一下老美EverettN。McKay及MikeWooding写的书<<DebuggingWindowsPrograms>>,你一不定受益匪浅。
(七)养成自我测试的习惯
测试工作应由测试工程师来做,但在你写完一个模块或一个软件时,还是要自已先测试一下,保证不要出现一些低级的错误,何况这些错误让测试工程师看到了,狂扁你一顿,你很没FACES的。
(八)善于交流善于沟通,特别是经常与一些高手交流一下学习的心得体会;
(九)阶段性地做一下专题总结
(十)要有持之以恒的精神
这是废话,因为我揍不齐十大,所以将它也算上,中国自古以来喜欢号召大众学习某种精神,比如马克思的,列宁的,毛泽东的,邓小平的,雷峰的等,这些精神使社会更安定人民生活更美好,那么程序员要有什么样的精神呢?我不是我说了就算了的,我只是想说明要学好任何一门技术,最好要有持之以恒精益求精的精神,特别是学一些比较抽象比较难的技术,比如VC++,我想它应比别的开发语言都要难学些,或许你已经开始了两年了,但感觉还是不爽仿佛也没掌握什么,这个时候你除了思考一下你的学习方法以外,还必须坚定你的目标及信念!
如何成为一名优秀的程序员
一位仁兄说的“程序员写的程序不是算法+语法,而是要能够满足用户需求的工具”我非常赞同,要想达到用户需求就必须从各个方面来考虑如业务、人机交互、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只知语法不知其他那就真是编程机器了!编程机器在印度高中生经过几个月培训,按照严谨的软工方法,加上较高的管理,就可以胜任了!大家相信吗,我是相信的!谈到这里我就不禁说到了国内教育界最近在探讨的问题“计算机科系的毕业生特别是本科大专生到底出来干啥、如何适应社会要求”,大家也看到了很多计科系大学生说精通N种语言,熟悉N种工具,不知道学校里的其他知识到那里去了,甘愿做编程机器,浪费了人民的纳税,干高中生能干的事,比较可惜吧!在国内现在就是这样了,看过一则帖子:清华的计科系毕业声在建筑院里搞开发还不如建筑专业的毕业生。说着说着就岔道了,国内的软件开发业到底是需要那些人:如果仅仅是编码机器,那我估计中国硅谷还是做梦去吧!
1、面对需求不考虑用户,只是考虑用那些程序技术展示自己的语言语法技巧.
2、学习了N种语言.
3、从来不学习或实践软工.
4、语法语言水平在众人中遥遥领先、特别是一些稀奇古怪的语法凭着兴趣和创造力去干,却重复繁琐的劳动。做着没有意义-唯一意义是赚钱,而且真是出了半斤力,拿不足八两。终日劳累,却不能学自己想学的。最终结果是跟不上社会科技的发展,人已衰老。悲哀!!!
开发软件的关键是要有想法,一个好的想法比什么都重要。尤其是有关网络方面的就更是如此。