《VC常用控件的使用.doc》由会员分享,可在线阅读,更多相关《VC常用控件的使用.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 教 案2007 2008 学年第一学期主 讲 教 师课 程 名 称面向对象程序设计(VC+)课程类别专业基础课学时及学分80、4授 课 班 级使 用 教 材 VC+的使用及面向对象软件工程实例分析系(院、部) 教研室(实验室) 计算机应用教研室课时授课计划课次序号: 一、课题ch373.9 常用控件进度条、微调控件、滑动条、滚动条的使用二、课型:讲授三、目的要求:1、 熟悉这四种相近的控件的功能与应用区别2、 掌握四种控件的使用方法3、 学会使用定时器四、重点、难点:控件的使用是重点,其中滚动条的使用较复杂一些,是一个难点。 五、教学方法及手段:结合实例讲解控件的功能与简单应用,然后总结控件
2、的消息和主要操作。六、参考资料:面向对象程序设计与VC+实践,揣锦华编著,西安电子科技大学出版社,第10章VC+使用教程(第2版),郑阿奇等编著,电子工业出版社,第5章七、作业:(1) 完成思考题(2) 习题3.10八、授课记录:授课日期班次九、授课效果分析:十、教学进程(教学内容、教学环节及时间分配等)1、 复习列表框和组合框的功能与使用方法的异同点。2、 导入课题进度条用于在一个冗长的操作中给用户一个可视的进度窗口;微调控件用于与编辑框控件一起方便用户输入数字;滑动条常用于在一个范围内通过滑块的移动选择一个值,滚动条用于选择某个范围内的一个值。3、 教学内容ch3.7 进度条一般用于输出某
3、个操作的当前进度情况。进度调控件类:CprogressCtrl基本操作:见表3.28SetRange():设置进度条的范围 ;GetRange():获取范围SetPos():设置进度条的当前位置 ; GetPos():获取单前位置SetStep():设置每一步的增量SetIt():进度条增加一步应用:通过进度条对应的控件变量的成员函数GetPos()函数取得进度条的当前值。例1:进度条的范围设置为0100,单击“自动”按钮,启动定时器,以后每隔0.1s进度条推进一步。分析:定时器的使用SetTime(0,100,NULL):设置0号定时器,定时为100ms,定时时间到则发出WM_TIMER消息
4、。KillTimer(0):撤销0号定时器。成功则返回true,否则返回false。定时时间到的事件处理:在WM_TIMER的消息映射函数OnTimer()中实现。实现步骤:(1) 创建对话框应用程序 Progress(2) 设计界面:进度调控件、“自动”按钮;设置进度调控件的属性和风格(3) 添加变量:m_Progress CprogressCtrl类型(4) 添加初始化代码:在OnInitDialog()函数中添加进度条的范围、步长设置。 m_Progress.SetRange(0,100); m_Progress.SetStep(10);(5) 添加“自动”按钮的消息映射及函数:SetT
5、imer(0,100,NULL); /启动定时器(6) 为对话框窗口添加定时器的WM_TIMER的消息函数。(CprogressDlg类的消息)函数名固定为OnTimer(),添加代码如下: m_Progress.StepIt(); /进度条推进一步(7) 编译、连接、运行。结果:进度条的进度指示反复从左到右,不停止。(8) 改进:在OnTimer()函数中增加判断进度条是否到最大值的判断。代码如下:if(m_Progress.GetPos()=100) /当进度快到达最大值时,停止计时器 KillTimer(0);例2:用“自动”或“手动”两种方法控制进度条的递增。即当单击“自动”按钮时,开
6、始按定时器的时间自动递增;若单击“手动”按钮,则“前进”按钮可用,每单击一次进度条递增一步,直至到达最大值。练习要点:“前进”按钮的初始化状态为“不可用”,代码:GetDlgItem(IDC_BUTTON3)- EnableWindow(false);“前进”按钮的单击消息映射函数代码同OnTimer( )ch3.8 微调按钮又称“旋转按钮”,一般与编辑框一起使用。当单击微调按钮的箭头时增大或减小一个数值,该数值显示在他的伙伴窗口编辑框中。伙伴窗口的设置:微调按钮的前一个Tab键控件。属性设置:必须选中“Auto buddy”和“Set buddy integer”基本操作:设置范围、设置当前
7、位置等,见表3.30应用:利用编辑框对应的int型变量取得微调按钮的当前值。例3:用三个微调按钮设置红、绿、兰三原色,在静态文本框中显示相应的颜色。思路分析:当微调按钮的值发生变化时,发送UDN_DELTAPOS消息,添加该消息的映射函数(取得微调按钮的当前值,并调用对话框的Draw()函数重画静态文本控件。主要实现步骤:(1)设置微调按钮的属性:“Auto buddy”和“Set buddy integer”(2)添加微调按钮的变量(控件变量,如m_pRed)、编辑框的变量(int型,如m_Red)(3)添加微调按钮的UDN_DELTAPOS消息映射函数:(比如,表示红色的微调按钮的) vo
8、id CEx_spinDlg:OnDeltaposSpinRed(NMHDR* pNMHDR, LRESULT* pResult) NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;/ TODO: Add your control notification handler code hereUpdateData(true);Draw();*pResult = 0;(4)为对话框类CspinDlg添加Draw()函数:在Class View页面,右击CspinDlg,在弹出的快捷菜单中选中“Add Member Function”,设置函数名Draw、函数类型v
9、oid,并添加如下代码: void CEx_spinDlg:Draw()CWnd *pWnd= (CWnd*)GetDlgItem(IDC_STATIC_COLOR);CDC *pDC=pWnd-GetDC();CBrush drawBrush;drawBrush.CreateSolidBrush(RGB(m_Red,m_Green,m_Blue);CBrush *pOldBrush=pDC-SelectObject(&drawBrush);CRect rc;pWnd-GetClientRect(rc);pDC-Rectangle(rc);pDC-SelectObject(pOldBrush)
10、;(5)编译、连接、运行。可以看到三原色的变化的结果。 还可以直接在编辑框中输入某种颜色的值,查看结果。 结论:编辑框的变量与微调按钮的调整自动对应。Ch3.9 滚动条和滑杆一、 滚动条:1、滚动条的基本操作:即CscrollBar类的主要成员函数 设置滚动条的范围:SetScrollRange(int nMin, int nMax, bool redraw) 设置滚动块的位置:SetScrollPos(int nPos, bool redraw) 取得滚动条的当前位置:GetScrollPos() 获取滚动条的范围:GetScrollRange(LPINT MinPos, LPINT Max
11、Pos)2、滚动条的消息:WM_HSCROLL和 WM_VSCROLL 当用户对滚动条操作时,滚动条就向父窗口发送WM_HSCROLL或 WM_VSCROLL消息。该消息通过类向导在对话框(滚动条的父窗口)种进行映射,相应的映射函数分别为:OnHScroll()和OnVScroll(),函数原型: OnHScroll(UINT nSBCode, UINT nPos, CscrollBar *pScrollBar); 参数说明:nSBCode 表示滚动条的通知消息 nPos 表示滚动块的当前位置 pScrollBar 表示滚动条控件的指针当用户单击滚动条的不同位置时,产生不同的通知消息: SB_
12、LEFT,SB_RIGHT ; SB_TOP, SB_BOTTOM ; SB_LINEUP , SB_LINEDOWN; SB_LINELEFT, SB_LINERIGHTSB_PAGELEFT, SB_PAGERIGHT; SB_PAGEUP, SB_PAGEDOWN; SB_THUMBTRACK(拖动滚动块时)以上消息代码来自于WM_HSCROOL或 WM_VSCROOL.3、应用特点:(1) 在OnHScroll()和OnVScroll()函数中需要用switch语句判断具体是哪个通知消息(用户进行了何种操作),然后用SWITCH语句分别对不同的通知消息左不同的处理。(2) 滚动条中的滚
13、动块不会自动随用户的操作移动,因此需要用SetScrollPos()函数来及时的设置滚动块的位置。二、 滑杆:又称“滑动条”。可以通过鼠标拖动、单击滑块的任意一侧、或者使用键盘移动滑块。应用场合:选择离散数值或某个范围内的彝族连续数值时常用。滑杆控件类CsliderCtrl的主要成员函数(即滑杆的基本操作):设置范围、设置当前值、设置滑杆控件的增量、取得滑杆的当前值等见表3.34.滑杆的风格:表3.35滑杆的消息:同滚动条三、应用举例4:将例3中调节绿色的微调按钮改为滚动条、将蓝色的微调按钮改为滑杆。程序名:ex_scroll ,Draw()同上。实现步骤:(1) 添加滑杆控件和滚动条控件,代
14、替蓝色和绿色调节微调按钮。并设置属性。(2) 添加变量:三个编辑框的int 型变量m_Red、m_Green、m_Blue,三个控件对应的控件类型变量m_pSpin m_pScroll m_pSlider。(3) 在OnInitDialog()函数种添加控件的初始化代码: m_pSpin.SetRange(0,255);m_pSpin.SetPos(m_Red);m_pSlider.SetRange(0,255);m_pSlider.SetPos(m_Blue);m_pScroll.SetScrollRange(0,255);m_pScroll.SetScrollPos(m_Green);(4
15、) 添加滑杆的NM_CUSTOMDRAW消息映射函数:void CEx_scrollDlg:OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code herem_Blue=m_pSlider.GetPos();UpdateData(false);Draw();*pResult = 0;(5) 添加对话框类的WM_HSCROLL消息映射函数: void CEx_scrollDlg:OnHScroll(UINT nSBCode, UINT nPos,
16、 CScrollBar* pScrollBar) / TODO: Add your message handler code here and/or call defaultint nID=pScrollBar-GetDlgCtrlID(); /取得产生消息的控件IDif(nID=IDC_SCROLLBAR1) /是滚动条产生的水平滚动消息switch(nSBCode)case SB_LINELEFT: m_Green-; break; /单击左箭头case SB_LINERIGHT:m_Green+; break;case SB_PAGELEFT: m_Green-=10; break; /
17、单击左边空白处case SB_PAGERIGHT: m_Green+=10; break;case SB_THUMBTRACK: m_Green=nPos; /拖动滚动块if(m_Green255)m_Green=255;m_pScroll.SetScrollPos(m_Green); /设置滚动块的当前位置UpdateData(false);Draw();CDialog:OnHScroll(nSBCode, nPos, pScrollBar);提示:每添加一个控件的消息映射函数,运行一次,逐个体会控件的功能和用法。思考:(1) 如何实现“用户通过编辑框输入来改变颜色值?”提示:为三个添加编辑框添加同一个EN_CHANGE消息映射函数,设置三个控件的当前位置(2) 如何改变滑杆的递增/减步长?提示:用SetTicFreq()设置刻度线的频率 4、 课堂总结进度条、微调控件的基本操作:设置范围、设置初始位置、取得当前值。控件的应用特点:微调按钮与编辑框的“伙伴关系”、滚动条的消息处理函数以及滚动块的位置设置。定时器的使用:设置、撤销、定时响应函数OnTimer().添加非消息映射函数(如Draw)的方法。5、布置作业(3) 完成思考题(4) 习题3.10