首页 VC 实验七 MFC 定时器编程实验

VC 实验七 MFC 定时器编程实验

举报
开通vip

VC 实验七 MFC 定时器编程实验实验七 MFC 定时器编程实验 一、预备知识 1、定时器消息 定时器时间到时,向窗口发送 WM_TIMER 消息,应用程序窗口通过处理该消息来对定时器事件进行处理,该消息的参数说明如下: WM_TIMER wTimerID = wParam; // 定时器标识符 tmprc = (TIMERPROC *) lParam; // 定时器回调函数的地址 其中,定时器回调函数在使用SetTimer启动定时器时指定,如果没有指定定时器回调函数则可直接通过消息映射处理 WM_TIMER 消息。 2、启动定时器 使用SetT...

VC  实验七 MFC 定时器编程实验
实验七 MFC 定时器编程实验 一、预备知识 1、定时器消息 定时器时间到时,向窗口发送 WM_TIMER 消息,应用程序窗口通过处理该消息来对定时器事件进行处理,该消息的参数说明如下: WM_TIMER wTimerID = wParam; // 定时器标识符 tmprc = (TIMERPROC *) lParam; // 定时器回调函数的地址 其中,定时器回调函数在使用SetTimer启动定时器时指定,如果没有指定定时器回调函数则可直接通过消息映射处理 WM_TIMER 消息。 2、启动定时器 使用SetTimer函数创建一个定时器,并制定超时时间,然后启动定时器。该函数说明如下: UINT SetTimer( UINT nIDEvent, // 定时器标识符 UINT nElapse, // 定时时间,单位是毫秒 void (CALLBACK EXPORT* lpfnTimer) // 定时器回调函数地址 (HWND, UINT, UINT, DWORD) ); 示例代码: SetTimer(1,200,NULL); 3、销毁定时器 定时器在不使用时要使用KillTimer函数进行销毁,该函数说明如下: BOOL KillTimer( intnIDEvent // 定时器标识符 ); 示例代码: KillTimer(1); 二、实验目的 (1) 掌握 Visual Studio 开发环境调试程序的方法; (2) 熟练使用类向导进行消息映射; (3) 掌握 MFC 编程模式中定时器的使用方法。 三、实验内容 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 一个窗口,在窗口中间位置绘制一个红色粗实线的矩形,并用交替使用三 种不同样式的画刷填充矩形的内部,每次刷新的时间间隔为 1.0 秒。 单击鼠标左键启动定时器,单击鼠标右键停止定时器。 四、编程实验部分程序及运行结果 (1) 列出定时器操作相关的程序清单 1、WM_PAINT消息的处理 //OnPaint()函数实现用自定义画笔绘制一个矩形 //并调用相应的画刷填充图形内部 voidCDemoDlg::OnPaint() { CPaintDCdc(this); CPen  Pen, *pOldPen; CBrush Brush; Pen.CreatePen(PS_SOLID, 6, RGB(255, 0, 0)); //m_nStyle用于选择不同的画刷填充图形内部 switch (m_nStyle) { case 0: Brush.CreateSolidBrush(RGB(0,0,255)); break; case 1: Brush.CreateHatchBrush(HS_DIAGCROSS, RGB(0, 255, 255)); break; case 2: Brush.CreateSolidBrush(RGB(0, 255, 0)); break; default: break; }    pOldPen = dc.SelectObject(&Pen); dc.SelectObject(&Brush); dc.Rectangle(100, 50, 450, 260); dc.SelectObject(pOldPen); } 2、WM_LBUTTONDOWN消息的处理 //当按下鼠标左键时启动定时器 voidCDemoDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO:  在此添加消息处理程序代码和/或调用默认值 SetTimer(1, 1000, NULL); CDialog::OnLButtonDown(nFlags, point); } 3、WM_RBUTTONDOWN消息的处理 //当按下鼠标右键是取消定时器 voidCDemoDlg::OnRButtonDown(UINT nFlags, CPoint point) { // TODO:  在此添加消息处理程序代码和/或调用默认值 KillTimer(1); CDialog::OnRButtonDown(nFlags, point); } 4、WM_Timer消息的处理 //当按下鼠标右键是取消定时器 voidCDemoDlg::OnRButtonDown(UINT nFlags, CPoint point) { // TODO:  在此添加消息处理程序代码和/或调用默认值 KillTimer(1); CDialog::OnRButtonDown(nFlags, point); } //定时器消息处理函数 voidCDemoDlg::OnTimer(UINT_PTR nIDEvent) { // TODO:  在此添加消息处理程序代码和/或调用默认值 //判断m_nStyle的值,实现用不同颜色的画刷填充图形 if (m_nStyle< 2) { m_nStyle++; } else { m_nStyle = 0; } //刷新图形 InvalidateRect(NULL); CDialog::OnTimer(nIDEvent); } 5、实验结果 五、实验总结 (1) 总结定时器消息编程的步骤,以及程序设计过程中需要注意的问题 定时器消息WM_TIMER消息: 消息号:WM_TIMER 字参数:wParam ==》定时器标识 长字参数:(TIMERPROC *) lParam==》定时器回调函数地址 CWnd::SetTimer()功能:设置定时器 UINT SetTimer( UINT nIDEvent, // 定时器标识符 UINT nElapse, void (CALLBACK EXPORT*  lpfnTimer) (HWND, UINT, UINT, DWORD) ); CWnd ::KillTimer()功能:销毁定时器 BOOL KillTimer( intnIDEvent    // 定时器标识符 ); 消息映射: 1、消息映射宏 ON_MESSAGE(WM_TIMER,OnTimer) 2、消息处理函数声明 LRESULT OnTimer(WPARAM wParam, LPARAM lParam) ; 3、消息处理函数实现 LRESULT CDrawWnd::OnTimer( WPARAM wParam, LPARAM lParam) { return 0; } (2) 总结实验的心得体会,实验中遇到的困难以及解决的方法等 通过本次实验编程,我学习掌握了从类向导中直接添加消息映射的步骤和方法,了解到通过类向导可以直接在项目中直接添加消息映射,添加处理函数,添加命令,添加成员变量等,使用类向导为我们的编程带来了许许多多的方便,省去了手动添加消息映射,添加成员函数的麻烦。通过本次实验,我重点学习和掌握了MFC 定时器编程,学习到定时器的消息号,及其字参数和长字参数所代表的含义,掌握了设置定时器SetTimer()和销毁定时器KillTimer()的两个定时器有关的函数,掌握两个函数的使用方法。通过此次的编程实验也让我巩固了以前学过的知识,使我能够更加清楚消息处理的过程及消息的处理,是我对MFC应用程序编程有了更加深刻的认识。 继续阅读
本文档为【VC 实验七 MFC 定时器编程实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_882336
暂无简介~
格式:doc
大小:26KB
软件:Word
页数:0
分类:互联网
上传时间:2019-08-26
浏览量:24