你的数据结构、操作系统学的不好。堆、栈、进程、线程、同步、互斥、内存管理这些内容都在上2门课里了。
句柄不是mfc的概念,相反mfc里对句柄用的还是比较少的,更多的时候是指针。句柄是windows的概念,说白了就是资源数字标志,比如窗口、图片等等,好比一个人的名字,得到句柄我们就可以对其进行各种操作。可以说windows的每个资源最后都是通过调用api通过句柄操作的。
弄清windows原理没必要吧,这个任务,个人觉得也太艰巨点了吧。你现在不适宜看核心编程,等你对windows SDK和MFC有了一定基础再看核心编程吧。看不明白可以慢慢来,有的东西不是1,2天就能掌握的,即使掌握了不用过几天也就忘记了,大多还是要在编程实践中慢慢积累的。
先看windows程序设计,然后再看核心编程
初学觉得最好多练习多实践。如果能结合所学的东西做点东西,也许会激发下学习兴趣。
内存分配的堆、栈和数据结构里的堆、栈还不是一回事。
在内存里,堆里的东西是动态分配的,栈是自动分配的,例如
int i;
int *p= new int;
其中 i是栈分配的, p是堆分配的。
栈里的东西会自动分配和释放(看i的生存期),堆里的东西是动态分配(需要new或者malloc等)也需要手动释放(使用delete或free)。
像函数的参数也是栈里分配,函数调用完也就自动释放了;还有全局变量也是在栈里的。
数据结构里的堆、栈,只是一种变量存储的结构,就像数组、线性表、队列一样。
句柄是sdk里面的东西,windows程序设计主要就是讲怎样用c进行简单的sdk编程。这些也是很基础的api编程知识。编程这东西需要讲究循序渐进,前面有些不了解,后面可能就看不懂了。
我和LZ一样也是大三
我说下我怎么入门的吧,希望对你有帮助
大一学一学期C,然后就没电脑课了,我就自学.
大二下的时候学vb一个月,然后大三上的时候看孙鑫的C++从入门到精通的教程一个多月(一天一集),然后就看<核心编程>一周,现在在学wdm.当然其余时间都在玩,一阵一阵的.
Ps:<核心编程>真TM经典!
。。。晕
这样啊,把学校里课程先学好再说,把GPA搞上去,还有什么急的~
至于windows编程嘛,既然现在遇到瓶颈,那就慢慢来,你现在马上学会它想干嘛???写个软件去应聘?还不如把它当做一个爱好,没事看看,另外,很多东西都是相通的,开阔一下视野啊,平时多接触各种知识,哪怕只是泛泛了解也好~
In fact, 我发现,不管学什么,在迷糊时间累积到一定程度后必然会茅塞顿开,时间不会很长的,要相信自己,祝你好运!
看了你的描述,首先感觉你的C语言基础不是特别好,包括数据结构,如果你对这两样都很熟练地化,什么内存分配、栈、堆都十分好理解,至于MFC我的建议还是看实例吧,有些概念实例看多了就算不懂也会用了。
在做实例的时候要多翻翻原来的书,比如谭浩强的C语言和数据结构,再加MFC,争取这三本书每个星期能大致上翻上一遍,配合你所做的实例,你会有更深的认识
另外对于编程来说最大的问题就是心态,因为编程是考验逻辑思维能力的,通常你越急越没思路,需要静下心来,好好对问题进行分析,不要眼光停留在大四毕业后找工作的问题上,要将编程当做一生的事业,摆正心态,利用尽可能多的时间看一些编程方面的书,就算你大四毕业一时找不到工作,仍然能将编程学习继续下去,总能够有一天你可以成为编程高手。
所以与其自怨自艾,不如多花点时间看书实践
终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来,变成钱。这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的,而且IT技术进步是如此的快,不跟进就是失业。但是对于初学者来说(尤其是时间充裕的大中专在校生),这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西,学习why 而不是how 。时髦的技术往往容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大化的降低软件开发的成本。但在IT 领域内的现实就是这样,越容易掌握的东西,学习的人越多,而且淘汰得越快。每一次新的技术出来,都有许多初学者跟进,这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间,而等他学会了,这种技术也快淘汰了。基础的课程,比方数据结构,操作系统原理等等虽然不能让你立马就实现一个linux(这是许多人嘲笑理论课程无用的原因),但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技术(比方Win32 SDK 程序的设计,DDK的编程)来说甚至是不可或缺的。
一个活生生的例子是我和我的一个同学,在大一时我还找不到开机按纽,他已经会写些简单的汇编程序了。我把大二的所有时间花在了汇编,计算机体系结构,数据结构,操作系统原理等等这些课程的学习上,而他则开始学习HTML和VB,并追赶ASP的潮流。大三的时候我开始学习Windows 操作系统原理,学习SDK编程,时间是漫长的,这时我才能够用VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已,但临到毕业才发现自己的选择是何等的正确。和我谈判的公司开出的薪水是他的两倍还多。下面有一个不很恰当的比方:假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。几个重要的基础课程
如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。
大学英语-不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。
计算机体系结构和汇编语言-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书。《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
计算机操作系统原理-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。
数据结构和算法-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C++版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。
软件工程-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
Windows 程序设计-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。
在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在 学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。
上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。