下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 4484|回复: 6
打印 上一主题 下一主题

VC入门的一条路,一个暑假应该够用了

[复制链接]
  • TA的每日心情
    擦汗
    7 天前
  • 签到天数: 2402 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2003-3-31 17:09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我在网上拷下来的东西,不知道对大家是否有用.  O7 J" b2 ~. F" B" t
    作者:史列因 发表于http://www.vchelp.net$ ]2 u& E) i+ M% V5 ?- W
    - @9 Z+ |; \5 P% ], [0 k6 Y
    VC入门的一条路,一个暑假应该够用了。
    / J6 W* l6 w3 R
    ' i9 u6 }% X: {  y- w3 T    首先声明,我可不是什么高手,也就是刚脱贫。因为运气很好,买到了几本好书,在学习过程中几乎没走什么弯路,没费什么劲就入门了,现在一般的小程序能搞定了。看到那些因为不知从何下手而苦苦挣扎的朋友,希望我的文章能给他们一些帮助。2 q% A0 r  L( T& Q) Z

    5 @: |" ^8 x; |4 {    学编程急不得,上来就学VC肯定碰一头灰,说VC难就难在这点上了。如果硬上,意志坚强的话也许能挺过来,但也是会缺乏后劲,不得不回过头来补习基础知识。意志不坚强的话,很有可能就此放弃了,并留下一个VC难得不得了的印象。其实,只要踏踏实实一步一步来,VC也就是很简单点事。在这里我说一下,如果你还只是一个初中生,那么你就应当仔细考虑一下了。首先,限于你的知识和思维能力,学学C语言还应该没问题,但要学VC是要下相当大的功夫的。而且,你现在学到的东西将来一定会过时,所以不如把精力放在算法的研究上,毕竟这些东西永远都不会过时。& i* B" d. ~0 U; u- j
        + J' b+ {3 }6 O+ x- z) U1 ]( I
        我觉着如果走对路子,入门VC,一个暑假应该够用了。3 ?) O" W6 [, W2 i9 n

    + W2 L3 s6 P8 [  _) G5 X$ v    虽说学VC并不是传说的那么难,可不下些苦功夫是学不成的。在学VC前,你必须确定,你是因为热爱编程才学VC的,而不是出于炫耀或其他。否则,恐怕你坚持不到胜利的那一天。    + I: \- d$ p' C( \) J7 L. I. A

    9 @6 `# `( V, U    对于首次接触编程的同学,我建议最好先学一下Quick BASIC(DOS里就有带,就是那个QBASIC.EXE),不用多学,知道什么是整型什么是浮点,以及DO...LOOP FOR...NEXT 等最基本的知识,能算个阶乘,求个积分就行了,关键要明白计算机是怎么执行命令的,对编程有个感性认识。如果你对自己有自信,也可以直接学C++,应该也不会多费太多事。不过我觉着因为有很多资料是FOR VB的,并且网页编程常用VB Script,以后你也很有可能要用到VB,所以了解一些BASIC对以后也是有帮助的。而且如果只是要算个小题用QB比VC、VB之类方便多了。(找个人教一两天应该就能搞定了吧)
    * x* r$ ?+ f; R6 r5 P) a) `* u0 p5 |8 w) U% f! r
        之后我建议找本初高中信息学奥赛的书(有些奇怪吧)。这些书里讲解了基本的算法,写的却比较通俗,没什么高深的数学知识,容易理解。这些东西在数据结构课程中有系统严密的讲解,所以也可等以后再学。但我觉着现阶段写一些小程序,实现些常用算法对自己的思维是很好的锻炼,对以后的学习大有好处。我想,能排排序,求个八皇后,算个汉诺塔,再知道深、广度优先搜索就可以了。/ y; M; O0 O/ {) z% i
    % L$ e  B  T3 [
        如果你已经有一些编程的基础知识了,自然就可以跳过以上两步。4 B8 ~" d, ?6 n  b" @, I
    * c1 k1 a+ B, ~
        等你对编程有一定的认识后,就应该开始进军C++了.注意,是C++而不是VC,这两者根本不是一码事!别买VC入门,你肯定看不懂!C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础上。
    + j1 z/ R5 T7 [  ~4 T6 _" j  H6 f9 @8 X+ A
        我觉着比起许多花花绿绿的大全、宝典,不如买本大学的C++教程(注意:别买等级考试的教程,那是应试用的),那些教程大都经过反复锤炼,比较系统,很有含金量,有不会太贵。这里我暴力推荐由清华大学出版社出版的一本《C++程序设计教程》,封面是红色的,封底是黄色的,看起来很朴素,主编是钱能。这本书简直是好的没法说,还便宜(39.5元)。这本书不但告诉你语法,还告诉你为什么要这样规定语法,看完之后,你会觉着那许许多多的规定是理所当然的,根本不用费心记,不但不枯燥,反而会使有一种美感。书中还有许多实际编程时应注意的问题,很有价值。这本书还配有《实验指导》,和《习题集》,不过对于有一定编程经验的人应该是用处不大,所以我没买。除了这本书,我建议再买本关于传统C语言的书,要着重以下几个方面:编译预处理、typedef的使用,位运算,标准库函数的使用(最好有一个比较详细的列表,用的时候好查)。6 [# Q/ j; W: M

    ( }( ~0 `! Q6 ^( e( K: b    C++的标准类模板是个不错的东东,不过对于学习MFC却没有帮助,原因是MFC太落后了(^_^),可以先放一放,要不要学等搞定MFC时再作决定。虽然我没怎么学过,不过觉着它挺不错,而且代表了一种发展方向。虽然学着费劲(那东西几乎没一点C++的样子,简直是在学新语言),但掌握它可使编程轻松不少。
    , E' X, d0 `- r+ ]4 _, f6 k' T# f. P$ S6 n: l: b
        学完了C++,该学VC了吧?别急,先找本WIN32编程的书,这次没什么讲究,看着差不多的,便宜一些的就行了,如果有对于VC集成环境的介绍就最好了。WIN32编程是指用WINDOWS API编程,MFC是将众多的API函数进行了封装的类库,用起来方便了不少,但如果没有一些API编程基础,对相关概念不了解,学起MFC来可能会很费解。相信我,将来你不会觉着学API编程是浪费时间的。API函数有两千多,要都学会累死。其实你只要知道如何创建窗口、对话框、控件、消息循环,了解了句柄的含义就差不多了,最好再了解一点GDI编程。这个阶段的关键是要理解WIN32程序是如何运作的,把握各种窗口间的关系。因为你以后应该很少直接用WIN32 SDK编写程序,所以关键是理解整体结构,记住几个函数并没有什么意义。函数用的时候可以现查。手头应有一份比较全面的资料。中文的API函数大全好像只有For VB的,不过看起来应该是没有任何障碍。英文的资料MSDN中就有,相当全面,也比中文的详细一些。我建议用中文资料快速查找,有问题再看英文。(我忘了我的html版中文API大全是从哪下载的了,不过书店有售,白皮的,很厚一本,很贵就是了。谁想要可以与我联系iamsor@sohu.com)
    - x( V% a. F0 ?* Z1 c* r3 L# E4 U4 m4 E7 B
        对于想学游戏编程的朋友注意:从现在起,你不必去学什么MFC了,相信我,那东西除了让你头疼一点用处都没有。游戏都使用Win32 SDK编出来的。现在,你要学的是DirectX。我推荐老王翻译的DirectDraw文档(www.imagic3d.com),前面有一些老王自己写的基础知识,很适合入门, 在此特别感谢老王的辛勤劳动。我还买了一本《DirectX 7 速成教程》,机械工业出版社出版,封面封底都是红色。除了翻译惨了点还算不错,介绍的挺全面,还有一些游戏编程基础知识。如果你想图省事,可以考虑用云风编写的风魂游戏库,很方便的(www.codingnow.com 对云风的辛勤劳动表示感谢).不过我仍然建议至少了解一下DirectX.这里说一下,很多朋友抱怨找不到有关DirectX的书籍,我告诉你,别去编程书籍里找,去多媒体制作书籍那找,还要把眼睛瞪得大大的、圆圆的。Director.. Director.. DirectX!!!知道了吧,书店工作的人眼神都不大好,我也是有一天没事瞎转才发现的,吓了我一大跳。发现这个秘密后我发现其实有不少关于DirectX的书,只是一般人找不到罢了。学会了DirectX,就可以开始奋斗了,剩下的问题就只有积累经验了。7 v  d# {/ d, Y8 W
    + B% \9 |7 X5 P- J: B, E/ e
        对于志向是应用软件的朋友,打好了基础,现在进军VC的障碍都已扫清了。不过还是应做好充分的思想准备,事情不会那么顺利的。刚开始,你就要面对一个瓶颈,大量的紧密关联的知识,使你必须一下理解一个整体,而很难一点点来。可以说,学VC最难的就是刚开始。情况有些类似于你第一次创建窗口时面对的那长长的程序,只不过更糟糕就是了。很多人就是在此被一大团知识噎着,放弃了学习。事实上,这几乎是Windows编程的一大特点,在WIN32编程时你就应当有所体会,而DirectX和COM都有类似问题。记住,一定要坚信:突破了这个瓶颈之后便是一片海阔天空,而有着扎实基础的你是一定能闯过去的。2 u* n9 O" F9 v
        我的建议是,不要等彻底弄明白一句才看下一句,而是知道好像怎么回事就向下看,实在看不懂也硬着头皮往下看,等能比猫画虎的作出个菜单、对话框时便回过头再看一遍,几遍之后应该就可以大概明白MFC程序的运作了。注意:这里有个关键,一定要用心体会面向对象编程的精神,努力将眼前的程序与你之前所学的知识联系起来。通过比较成员函数和对应的API函数间的区别,尝试去理解MFC是怎样封装相关的API的。例如,相当多的类将句柄封装了起来,在传递参数时加以省略,这就是一个很重要的特性。MFC中有许多的宏,看起来很奇怪,但你不必理会其实现方法,只要知道如何使用便可,这点也很重要。还有,千万不要过于依赖ClassWizard,对于其生成的代码要自己进行分析,偷懒就不能真正理解MFC。
    1 Q+ I- j6 v& O1 T0 c# B8 E- G: t. i
        这里我介绍一种学法,不过学法这种东西因人而异,所以还要根据个人的情况决定。开始时,教程让怎么办就怎么办,比猫画虎的作出个菜单、对话框,然后试着添加控件。等能不看教程便做到这些时,开始逐字逐句的试着理解MFC程序的组织。若看不懂就跳过看下面的。就这样一遍一遍来。如果觉着头大就先歇上两天,等清醒了再接着来.最好在这期间多找些介绍MFC框架的文章。注意:先不要碰有关文档/视结构的东西,否则你会更头大。然后便可试着写个定时器、名片夹之类的小东西,熟悉一下各种控件的使用。
    * R: N, X5 x6 I% ~: s
    6 |0 v, i, Q( @% X    突破了开始的瓶颈之后再学下去便会越学越容易,因为你可以一点一点的积累知识,而不用担心被噎着了。再过不久,你就不得不开始使用API函数完成一些功能,如在系统托盘加图标,自画列表框等。这时,你也会体会到学习WIN32编程的好处了,没学过的人很可能就此卡壳。
    6 ?/ _" z  B, P2 q8 m2 e  j3 _
    % `+ |! J  v% w  u* K    关于VC的教程遍地都是,但鱼龙混杂,市场乌烟瘴气,骗钱的书真不少。有些书很厚,内容当然也很全,对老鸟很不错,但对于初学者似乎有些浪费钱,因为里面绝大部分的东西MSDN中都有,并且初学者用不着。老外写的书一般内容不错,但翻译水平是个问题。如果翻译糟糕可够你受的,加上价格不菲,我也不建议初学者买。还有些什么傻瓜书、图解之类,好像是面向初学者,时则为骗钱,你看完后除了那几个例子什么也不会作。如果你看到有一本书花了大量的篇幅图文并茂,生动形象的介绍如何画图,输出文字,别买!骗钱的!(:-< 我就被坑去42块现大洋)那些花哨的东西对初学者除了转移注意力没任何好处。如果你真的对GDI绘图很感兴趣,就去找些专门书籍,比那些书好多了。最好买名字类似于VC应用,VC编程之类比较正式的,图不要太多的,字不要太大的,最好是有较多的控件介绍的。当然,文字流畅也是很重要的。书不要买太多,最多两本,因为这些书内容都差不多,买多了的话东看西看反倒没好处。在这里,我建议初学者先别急着掏钱,而是去VC王朝( http://vcdynasty.yeah.net/)下载本MFC教程。虽说是网上教程,却当相当有水准。不但内容比较全面,还一句废话也没有(这里感谢作者的辛勤劳动)。只是可惜对GDI没有一点介绍,还须其他书籍作补充。等搞定这本教程时,应该就已经入了门,可以有针对性的选购书籍,不用担心上当受骗了。还有,VC知识库(www.vckbase.com)的网上杂志也很不错,对刚入门的人很有帮助,建议下载。入了些门后,各个网站多转转,看见好文章就往下拉,对提高水平很有好处。 8 a  K+ [, j; \5 ]3 K2 E

    4 j$ _. r; s0 @1 b    一套MSDN光盘在这时是必不可少的,什么都找中文资料是不可能的,即使能找到也会很费时间和金钱,只能看硬着头皮英文。不过以我的经验看,只要有高中水平的英语,加上金山词霸一路滑过去,看那种专业文章还是很容易的。还有,初学者一上来可能根本不知道上哪找需要的东西,我在这里把常用的地方列一下:
    + M, S8 _5 ^& j$ l! e- `' [) Y3 M
    ) i% {( M" z. [8 V( S9 A! h0 vWIN32 API:    平台SDK->Reference->Win32 Functions in Alpha Order! L- Z" F0 U3 [8 P
    MFC类库资料:    Visual C++ Documentation->Reference->Microsoft Fo...
    ( b5 ~, C6 G+ q- V; }C/C++语言及标准库资料:    Visual C++ Documentation->Reference->C/C++...8 K0 Y( Y% a7 M3 B" e
    标准控件:    标准控件都被MFC封装了,可以参考对应的类,如Edit控件对应CEdit类.5 ]7 @: m: ^. d
    VC中带的ActiveX控件:    Visual Basic文档->参考->控件参考(唯一的中文资料,却是最糟糕的。不但是For VB,与C++有很大区别,还翻译得乱七八糟,几乎没法用.如有高手知道哪有英文资料还请告知,不胜感激)
    5 ~6 i/ H" I( @) D7 k- S. c3 {* \
    ( {' b" ^% G) ]  ^( _3 c    目前市面上的MSDN光盘已经有一段历史了,有些东西可能有些过时。要最新资料的话,可以到微软的网站(当然是全英文的)。不过对于初学者似乎没有必要。! e/ g% q2 }) V1 J0 v

    9 y3 h6 e1 ?8 g# d( Z" ?    搞定VC后,要学什么都随你便了,再学C++Builder,VB,Dephi,java什么的都是一点难度都没有了,感觉就象是把关键字换了换。或者可以去啃啃COM,据说那是块硬骨头(不过好像也只是入门难,因为有了之前的经验,虽然我没碰过,但花点时间应该是搞得定的。另外DirectX编程经验在此应该是有些帮助的)。: @* Q7 g# x  ~$ o+ j
       
    : g4 z, q& L/ H" C# v+ n: I    最后,我建议有时间的话多研究一下各种算法。数据结构是一定要看的。不一定要记住(话说回来,不经常用的话也记不住),但至少要知道有那么回事,万一碰到问题了要知道往那边靠。其实,常见的链表等结构以及排序等算法在C++标准类模板中已经实现了,不用你去费劲,但有些了解的总是有好处的。至于离散数学、线性代数什么的,对于复杂些的算法是必需的,其中离散数学是数据结构的基础。不过,我倒觉着只要不是太复杂的问题只用经验也能解决(就象奥赛书中那样,只是实现而没有证明),而且那些东西不用就会忘。万一碰见个难题解决不了,找个高手帮忙也不错,省时省力^_^。0 u! G0 \0 r& y+ @
       
    # w$ Z' {8 k- y3 X$ p9 ^    下面是我想到的一些杂七杂八的问题,没什么条理,凑或看吧:6 B9 W9 }7 w, d- j# x/ E
        : x1 C( W3 F6 s  N+ R- q/ P
        英语水平不用很高,但至少要有高中水准,否则有你受的。6 _+ j( n4 E, c; V' x2 x; n
        ; ]3 x) H. B- e% L2 f# i5 w
        看书一遍看不懂没关系,事实上,要一遍就能弄懂你就很有天分了。只要多看几遍,综合分析,应该是没有什么问题的。
    9 l; U4 G- ]5 H/ _
    7 ^3 b1 m3 {' _) u    现在的世道,不是书到用时方恨少,而是书到用时方能学。不要试图满把抓,而要用到什么学什么。这样,学的又快,记的又牢。! l8 Y) L+ n& F  i5 @

    , c8 A; e8 y* c$ J& r$ g0 o0 G6 ?    一个错误认识-学编程靠的是记忆:这是很要命的思想,会让你累死而无所得。事实上,你几乎不用特意记任何东西。对于各种函数、语句,只要知道有那么个东西,用的时候知道上哪找就行了,用多了自然就记住了。学编程关键在理解编程思想。+ _5 R9 O# i# r. w1 {

    ; h+ c. I9 s) Y    一个小技巧:活用编译器可以帮你很多忙。在VC中,当你输入成员符号.或->时,程序会自动列出此类的成员,你只要选一个就行了。这样便省了很多记忆负担。例如,你想获得一个CString类对象的长度,对应方法肯定是Get什么,但是GetLetterNum还是GetStrLength却不知道,你可以输入xxx.Get,这样,你便可从列表中找到一个GetTextLength(),不是这个还能是什么,单击它的话还可能出现说明。还可避免打错字。如果想调用本类的成员函数,就输入this->,就可以查看成员列表了。对于全局函数,则是输入::即可。这样的话看起来还清楚。还有,如果没有出现那个列表,八成是你弄错了什么东西,例如变量没定义,或打错了字,但也可能是VC的BUG,很少就是了。对于初学者,这可是很好用的功能。" ]! j# |+ `* ]; K+ I7 h* F
        * M: U) Q5 t4 ]. @0 f. B1 y
        初学编程应遵循的一条原则:比猫画虎、不求甚解。关键在于很多东西你就甚解不了,例如MFC中稀奇古怪的宏。而且,甚解了也没太大的好处,暂时还是不要管它,会用就行了,什么时候有了闲工夫再来慢慢琢磨。多留心别人的程序是如何实现的,并照着去做。有时,一些小问题也体现着高深的思想。比如,一个变量要定义在什么地方,如何组织类的结构。如果不太明白,就先找着别人的样子去作,时间一长就会自然而然的明白,这就像下棋一样,老头怎么下,你也跟着怎么下,毕竟他出错的可能比你小。" Y  P( Z, D! I4 U7 R
    9 [7 s$ x. q$ e9 u
        还有,我觉着初学者不应把过多的精力放在象Cool的工具条,透明的、气泡状的窗口之类的工作上。再搞这些之前,你最好问问自己,自己的程序配得上这些漂亮的界面吗?尤其是,千万不要在刚开始动手时就先打扮界面,以免界面也弄好了,热情也没了。毕竟,看在眼里的成果给人的刺激比枯燥的算法强得多。如果你想搞的话,也要等程序主体定型后再搞。
    + o- L  D5 P% [. i, `! M$ A! z3 F% K. L2 u/ q% A7 Q. N
        初学时还应多留心关于程序结构组织的文章,这些东西是很重要的。要从一开始便养成良好的风格。否则有一天当你决定编一个大点的程序时,你就会发现干到一半就干不下去了。
    8 y* w7 Q6 ^" ]! B7 U5 u/ N- E4 J
    / y1 R* W& J/ N" y    编程不是技术活,而是体力活:学的时候满脑子全是技术,可用的时候就真成了体力活了。真正做起东西来,最重要的是要有毅力坚持到完。意志不坚强就难免半途而废。
    9 ^' H7 \$ A( T7 Z. F" _! C  f# k% }3 T! J8 \
        关于初学者是该学VC还是该学VB的问题:我觉着,学VC会难一些没错,但掌握学习方法的话也没想象的那么难,而且学VC才能深刻领会面向对象编程的精髓。它使你的思想提升了一个高度,对以后的发展是大有好处的。再说,如果这点困难都克服不了,以后也很难有什么作为。所以,即使你打定主意用VB,也还是花些时间看看VC,至少知道它的大概结构。从长远看,这是很有好处的。
    9 F! P* _3 P+ x. p% }   
    4 N, K- Q/ U% D. j    关于学C++ Builder还是Visual C++的问题:也许VC真的不太好,但总不会太糟。可关于VC的资料不知是关于C++ Builder的多少倍。尤其对于初学者,这时很要命的!何况两者相差其实并不太多,学会了一种,再学另一种也不会太费事。
    - A0 |1 e# ?: R& g# {2 G
    % J, S6 i9 K+ c; I    呵,没想到说了这么多。我已经声明了,其实我也就是刚入门,以上一切都是我自己的感受,难免有错误,还请高手指正。另外,这是我第一次写文章,加上我语文很糟糕,其实就是想到哪写到哪,各位就凑或一下吧。
    : L+ o3 d* ?" {" N6 P/ a" j
    4 S3 ]0 T+ P( ^/ n. [
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    该用户从未签到

    2
    发表于 2003-4-8 00:36:00 | 只看该作者
    实践比较重要
    饭团 该用户已被删除
    3
    发表于 2003-4-19 01:02:00 | 只看该作者
    我们专业没学C 就直接开数据结构C版的课了 晕~~~

    该用户从未签到

    4
    发表于 2003-4-25 00:22:00 | 只看该作者
    晕~看看都吓死了

    该用户从未签到

    5
    发表于 2003-4-25 15:25:00 | 只看该作者
    我的计划是三步走
    * R. C1 t2 T7 D1 J: YVB --> Delphi --> VC  Z# y1 q0 E" r& N
    ! ~* f: p1 N8 O1 I" V
    现在正在过渡到第二步
    Yaosl 该用户已被删除
    6
    发表于 2003-6-5 23:24:00 | 只看该作者
    以下是引用饭团在2003-4-28 23:38:07的发言:- v' K* `# j6 ~1 ~' Z" L+ a' A% l, \
    我们专业没学C 就直接开数据结构C版的课了 晕~~~

    / L& {) ^7 P' Z( n/ L& b+ G; {( ~4 }  E1 z0 L$ M* R. g5 T1 x
    你是什么专业的啊!!有这样开课的啊!!, W9 l! _$ V- _! H9 F$ ~/ M* k

    ! T: [/ E1 E1 D5 ~( Y+ F/ u; r- u学校真是不负责啊.
    bones7456 该用户已被删除
    7
    发表于 2003-6-7 08:44:00 | 只看该作者
    以下是引用游侠无极限在2003-5-4 9:27:58的发言:3 X2 q+ _/ B: h
    我的计划是三步走
      ^2 e% v0 B! M9 H4 ] VB --> Delphi --> VC
    ( b  R& v% J! T9 j+ L2 D+ p1 s; h: P2 \9 Z! P
    现在正在过渡到第二步
    4 t& {3 @: q: W/ ?6 Y8 s' p

    , b* J" [$ x3 w# Z7 T你在学delphi吗?怎么样?有写什么特点啊?好不好用?

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表