任务驱动的Windows应用程序设计教学实例
2018-09-13唐小勇
唐小勇
摘要:任务驱动是一种有效的教学方法,在计算机程序设计类课程教学中具有广泛应用。本文将通过实例方式介绍任务驱动式教学法在Windows应用程序设计课程中的应用。论文首先提出随鼠标移动的动态多彩文字程序设计任务特性,以此为驱动介绍鼠标事件、鼠标位置、文字动态与彩色效果等Windows 程序实现机制及技巧,最终编程实现此任务。实际教学效果表明此法能有效提高学生的应用程序设计能力。
关键词:任务驱动教学法;Windows API函数;事件处理
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)17-0173-02
任务驱动教学法是一种开放式、互动式、目的性与针对性强的教学形式[1]。为实现相应任务,要求学生充分发挥个体主观能动性和创造性,使学生在主体认知和获取知识过程中自然融入教学主导者创立的教学环境中,从而达到知识的主动获取、理解与消化[2]。本文将从Windows应用程序设计课程教学为研究对象,探讨随鼠标移动的动态多彩文字程序设计任务的特性、教学知识点和难点。以此任务为驱动,介绍鼠标事件、鼠标位置、文字动态与彩色效果实现的Windows 程序实现机制及技巧。以期提高学生的应用程序设计能力。
1 动态多彩文字任务
本课任务是利用Windows API函数实现随鼠标移动的动态多彩文字,其效果如图1。程序设计任务要求在Windows Visual Studio集成开发环境中利用WIN 32项目来实现,其标题为动态多彩文字。主要效果为鼠标在Windows窗口中随意移动,文字也跟着移动,文字颜色要求动态变化。
2 主要知识点介绍
1)鼠标事件及鼠标位置。本任务中涉及使用鼠标,因而要求学生掌握鼠标事,主要包括WM_LBUTTONDOWN:产生单击鼠標左键的消息;WM_LBUTTONUP:放开鼠标左键时产生;WM_RBUTTONDOWN:单击鼠标右键时产生;WM_RBUTTONUP:放开鼠标右键时产生;WM_LBUTTONDBLCLK:双击鼠标左键时产生;WM_RBUTTONDBLCLK:双击鼠标右键时产生;WM_MOUSEMOVE:鼠标移动等。
其次,本程序的文字随鼠标移动而移动,因而必须确定鼠标位置。一种方法是利用鼠标事件,其中参数lParam低字节包含当前光标的X坐标值,用LOWORD(lParam)实现;高字节包含当前光标的Y坐标值,用HIWORD(lParam)编程。鼠标事件wParam包含整数值以标识鼠标键的按键状态,其中MK_LBUTTON为按下鼠标左键;MK_MBUTTON鼠标中键;MK_RBUTTON为鼠标右键。鼠标位置的第二种方法是利用Windows API函数BOOL GetCursorPos(LPPOINT lpPoint),其中lpPoint为包含X轴和Y轴坐标值的结构体指针。此函数获取光标的位置通常以屏幕坐标形式给出,但不受包含该光标所在窗口映射模式所造成的影响。
2)文字动态效果。这里需要定时器进行动态显示,因而课程教学需要讲解定时器程序设计基本方法,如图2所示。应用程序首先在WM_CREATE消息事件中利用Windows API函数UINT_PTR SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT nElapse, TIMERPROC lpTimerFunc)设置时间间隔为nElapse毫秒的定时器。如nElapse=200,即定时器每隔0.2秒发出一条WM_TIMER消息事件。WM_TIMER事件处理主要调用InvalidateRect API函数发出WM_PAINT消息事件,要求系统重新刷新用户区,从而实现文字的动态显示效果。
3)文字彩色效果。Windows应用程序使用宏RGB定义绘图颜色,其形式为RGB(nRed, nGreen,nBlue)。如蓝色值,RGB(0,0,255)。本程序为实现各种动态色彩,声明颜色数组int color[11],并使用文本前景色设置API函数COLORREF SetTextColor( _In_ HDC hdc,_In_ COLORREF crColor)。本程序具体多彩文字效果用SetTextColor(hdc,RGB(255-color[i],color[i],255))实现。
3 编程实现
本任务效果主要在WM_PAINT消息事件处理中实现。程序首先利用API函数GetCursorPos(&pt;)获得当前光标位置,利用for(i=0;i<11;i++){x[i]=pt.x+(i-1)*40;y[i]=pt.y;}循环实现每个文字初始显示位置的设定。动态显示过程中各文字的相互关系是前显示文字位置变为后续显示文字位置,主要实现技术是如下所示的for循环for(i=10;i>1;i--){x[i]=x[i-1]+40; y[i]=y[i-1];}。最终文字显示的关键代码为for(i=1;i<11;i++){SetTextColor(hdc,RGB(255-color[i],color[i],255));TextOut(hdc,x[i],y[i],&str;[i],1);}。以此实现本文所提出的动态多彩文字。
4 小结
本文通过动态多彩文字Windows应用程序设计任务介绍任务驱动教学的任务设计、教学内容和教学方法,实际教学效果比填鸭式的讲授法有明显进步,学生实际反映教学效果较好。
参考文献:
[1] 刘红梅.任务驱动式案例教学法的构建与应用[J].江苏高教,2016 (4):71-73.
[2] 贺桂英.基于任务驱动和MOOC学习的开放大学教师研修模式探索与研究[J]. 高教探索,2016 (1):120-123.