大学生实习心得感想(篇1)
来公司实习已一个多月了,在这段时间里,我主要学习EVC下的MFC编程,下面主要谈谈学习的经验以及心得体会。
在编程过程中遇到了较多的问题,解决问题的过程是漫长而艰苦的,然而在问题得到解决的一刹那是很快乐的。在此举出数个例子与大家分享:
1. 音乐播放—>滚动条的绘制
在开始绘制滚动条的时候,为了简便以及缩短开发时间,我打算直接从VC默认的标准滚动条CScrollBar派生,然后对其进行所有者自绘(Owrner Draw),将图片贴上去,然而CScrollBar并不如CButton般好绘制,在经过近一天的尝试后始终无果,很是烦躁,后来在听从陈曦老师的建议后,决定还是从CStatic派生自绘,然后再加上一些鼠标、键盘的相应消息响应处理函数以实现滚动条的功能。
在确定这一思路后,我便开始着手代码的实现:首先实现了一个图片绘制函数LoadBitmapToScroll,用于将滚动条的滑块、上下箭头以及滚动条底色画到确定的区域。由于滑块的位置会不断的发生变化,因此将不能简单地将滚动条底色先画好,然后将滑块放到某一固定位置,因此我定义了一个类成员变量nThumbTop用于确定滑块顶部到滚动条顶部的距离并截取了一小块滚动条底色将其填充到滑块到两侧箭头的所有区域以实现滚动条的变化。然后捕获WM_PAINT消息调用LoadBitmapToScroll使对窗口进行重绘时将滚动条显示出来。这样当创建一个滚动条对象的时候,便能够将其简单地显示出来了。
要响应用户的外部输入,则只需要捕获消息即可,比如WM_LBUTTONDOWN便可以判断是否有鼠标左键按下并可通过鼠标位置判断点击的是向上的箭头、向下的箭头还是滑块。另外由于滚动条是不独立存在的,它一般会与一个窗口做伴,比如列表以控制其显示内容或区域。因此,我在滚动条类中定义了一个pList指针变量指向滚动条要控制的窗口对象,在鼠标点击滚动条的上下箭头时,通过向pList指向的对象发送WM_VSCROLL消息以控制窗口区域的上翻或下翻。
如此,一个具有美观界面及基本功能的滚动条大体上已经实现了。整个滚动条的绘制耗费了将近两天时间,尽管时间较长,但还是受益匪浅,整个绘制过程让我明白了:“一切皆有可能”,没有什么是不能实现的,只要它在现实生活中存在,很多东西表面上看起来很复杂,就象这个自定义的滚动条,只要将其功能进行分解然后一步步实现便可以了。
2. 透明文字的实现
由于嵌入式系统的特殊性,EVC并不具备VC的所有功能,透明文字的输出就是其中一例。VC下只要简单地通过SetBkmode(TRANSPARENT),然后在控件窗口区域内获取设备上下文DC,通过该DC调用DrawText即可将想要显示的文字在给定位置显示,然而EVC在CStatic、CListBox等一般控件下设置背景为透明色是不可行的,在纠缠了数个小时后,发现EVC虽然不能简单地设置背景模式为透明,却可以设置背景颜色为一给定的颜色,最后还是采用“先截取背景颜色,然后绘制文字,最后以原背景色设置为背景色”的方式解决。即:
dc.SetBkColor( COLORREF ); //设置背景颜色
dc.SetTextColor(COLORREF ); //设置字体颜色
dc.DrawText( … ); // 绘制文字