总结:
两周虽短但收获颇多。我实现的功能有:在客户区输出内容、修改字体、对话框的添加及应用、各对话框的使用、将函数的调用通过函数映射表来实现以及下拉框的添加;
大一时C语言学得和扎实,体现到了现在对以往知识的灵活运用、对新知识的融会贯通,没有遇到很难处理的问题。实习的目标我觉得很简单很容易实现,倒不是说我们做的事少,而是相较于其他编程语言“干活”轻松了,没有一大堆新的类需要理解知识量少而简单、程序结构无须我们自己再去设计而且它提供的结构足够清晰而简单。也是因为他足够简单,它对我们的要求真的不高,缺乏对我们处理高难度任务的能力的锻炼。此外我的性子也得到了磨砺,如最后在多次尝试去实现下拉框功能最终让我实现了这一功能。
成绩:实现了所有的要求而且完全了附加任务,速度较快。
收获:
win32的消息机制及程序框架使我对程序的运行方式及结构有了新的认识,这个框架很清晰让人一清二楚,消息的流通不用编程者去做,编程者只需要知道我的窗口将会产生什么消息、要做什么大大方便了编程者。这两周为今后的window API编程打下了坚实的基础,除了对win32的消息机制及程序框架有了一定的了解,此外包括通过句柄操作实体、CALLBACK函数只给系统调用、窗口类的知识、MSG结构的定义、对话框及控件的实现、滚动条的实现。
Win32消息机制及程序框架:Windows程序的运行是靠外部事件来驱动的,就是说,程序一直出于一个等待的状态,如果有一个事件发生,程序就会判断是什么事件,然后做出相应的处理。事件对应消息,每一个windows程序都必须有一个回路实现一直等待。
while( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } |
那么谁来接收这个消息并做出相应处理呢?就是窗口,这就需要我们为窗口设计一个函数,即所谓的窗口函数。
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch ( message ) { case WM_LBUTTONDOWN: … case WM_MOUSEMOVE: … case WM_DESTROY: PostQuitMessage ( 0 ); default: return DefWindowProc ( hWnd, message, wParam, lParam ); } return ( 0 ); } |
CALLBACK 是一种函数调用习惯,被定义为__stdcall,说明此函数为回调函数,由系统(Windows)自动调用的,当MYAPP.EXE接收到消息并 DispatchMessage之后,系统(Windows)就自动调用窗口函数WndProc了(DispatchMessage函数又将消息传回了 Windows系统,然后Windows系统通过消息中的窗口据柄找到对应的WndProc)。注意窗口函数中消息的分 支结构中default分支必须是return DefWindowProc ( hWnd, message, wParam, lParam );因为不论什么消息都必须被处理,DefWindowProc是windows内部预设的消息处理函数。
经验和教训:
一、 我常常在做一个功能的时候做到途中发现自己还没有掌握实现该功能所必须要的知识,这时我去找,而我发现我在自己主动学习这个知识的时候效率并不高,原因是该知识点又将涉及到其他的知识点,在试图理解该知识点的时候由于缺乏对此知识点所设计到的知识的理解那么我又要去先去理解他说设计的知识点。这前后的理解需要很大的能力,我没办法办到,所以我也不知道这是什么能力。我在想我该怎么解决这个问题,我开始从如何理解一个知识入手,我得到的答案是要有体系并且要从基础入手。
所以我对于以上问题的解决方案是不要去实现你不会的东西,学习知识一定要有体系要从基础入手。
二、 对于编程学习,应该从基础的编程语言学起,建立一种编程思维,这样不管是后续学习其他语言还是分析问题都是有益的。
三、 对于操作系统的理解对编程起到很大的作用。
四、 学会看代码,不要重发明轮子。
五、 做好情绪管理。我在不同情绪下的时候的效率是不一样的,有时候思维就会遇到死胡同,在充满斗志时效率最高。让自己进入充满斗志的状态。
六、 技术要做到精益求精,一下是一位高人对我的忠告,编程语言那么多,多语言的程序员虽然抢手,但是如果是半瓶水的水平,估计也是没人愿意要的。现在程序员非常多,是因为这个行业入门的门槛非常低,也就造成行业的水平参差不齐。做一个网站很难么,找个现成的框架,懂点数据库,建个数据表,前端再找个现成的模板,修修改改一个网站就出来了。但是满足这样就完了?那么水平可能永远就是这样了,其实这其中每一个点都是可以研究的很深的,比如网站的大数据存储,如何提供程序并行运行的效率,未来计算机行业的技术分工会越来越细,任何一个方面的专家都是相当有用的,在电子商务实验室混的一段时间里遇到信管班的同学交作业,他们交的作业很好,足够交由企业使用,但他们的技术功底我是了解的。对这几句忠告我牢记在心。
七、 和优秀的人在一起,在信管班时,始终是我一个人在做编程,遇到问题没有人一起讨论,一个优秀的集体能够带给你无穷的好处。
八、 教别人,教别人其实也是自己的一个学习的过程,教别人并把别人教会。不仅自己对于知识有了新的理解,同时增进了友谊。
这两周时间除了在编程知识上有了收获,我还收获到了其他的很重要的东西——习惯及性格的重要性。
一、严谨细致,我真真切切地体会到了缺乏严谨细致的习惯给我带了多大的痛苦,做事的时候我总是心急,着急看见成果,只注重结果,不注重过程,所以我总是很容易出现错误,而犯一个错误我需要为此花费很多的时间来为此错误埋单。又提供了一个欲速则不达的案例。
对于此我给了自己一个建议:但行好事,且不问缘或劫。如果想得到爱情,那就用心去爱,这是我的理解与感悟。
二、缺乏思考,一直有这样一个思维习惯做一件事只要把事情做完就可以了,而缺乏了问为什么、举一反三,一直做着“搬砖”的工作,这是我一直劝导自己要改变的,而我现在仍然无意识地犯着同样的错误。
三、缺少知识的储备量,在这一方面很难在短时间改变。所以我给自己的建议就是完成一个程序要写出一份计划,这其中的内容包括:需求分析、程序框图、涉及到的功能、将功能描述成函数、罗列未掌握的功能、找到未掌握的功能的解决方案、通过伪代码实现、确认无误后填满整个功能。
四、缺乏理性的分析能力,从小缺乏良好正确的思维方式,在这一方面我深感痛心,为了解决这一问题,我阅读了一些关于逻辑的书籍,试着去寻找解决的办法。在稍对逻辑有了一些认识之后愈发认识到由于缺乏逻辑对我的进步起到了多么大的阻碍作用。逻辑思维能使人学会分析、批判、推理、论证,学会以上者四个过程能让人避免很多判断上的错误。
五、缺乏对过往有效地总结与归纳,总是忙于各种事情,对于时间的分配缺乏合理性。在时间这一宝贵资源的分配上兼顾各种事情,让重要的事有一个合理的安排是一件很难的事,我现在正在做这件事。
六、考虑周全是还要给自己留后路,正如当初在选择专业分流的时候,通过听老师对专业的介绍以及家人给的建议综合考虑认为信管专业将是一个更有前景的专业,而那时的我虽然认识到软工将更加适合我,但相信我也可以在信管取得不错的成绩。经过这件事使我明白做一个决定,考虑的越是周到越是好,但我们不会总是正确,有些道理只有自己亲身体验过才能认识到,所以在认真地考虑之后还要记得给自己留一条后路。