




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MFC 定时器编程实验一、实验目的(1) 掌握Visual Studio 开发环境调试程序的方法;(2) 掌握MFC 消息映射的操作步骤;(3) 掌握MFC 编程模式中定时器的使用方法.二、实验内容设计一个窗口,在窗口中间位置绘制一个红色粗实线的矩形,并用交替使用三种不同样式的画刷填充矩形的内部,每次刷新的时间间隔为1.0 秒。单击鼠标左键启动定时器,单击鼠标右键停止定时器。三、程序清单1.头文件#include afxwin.hclass CDemoWnd:public CFrameWndpublic:CDemoWnd();CDemoWnd();public:LRESULT OnPaint(WPARAM wParam,LPARAM lParam);LRESULT OnTimer(WPARAM wParam,LPARAM lParam);LRESULT OnLButtonDown(WPARAM wParam,LPARAM lParam);LRESULT OnRButtonDown(WPARAM wParam,LPARAM lParam);DECLARE_MESSAGE_MAP()public:int m_nState; ;class CDemoApp:public CWinApppublic:BOOL InitInstance();CDemoApp theApp;2.源文件#include Demo.hCDemoWnd:CDemoWnd() / 构造函数m_nState = 0;CDemoWnd:CDemoWnd() / 析构函数BEGIN_MESSAGE_MAP(CDemoWnd,CFrameWnd)ON_MESSAGE(WM_PAINT,OnPaint)ON_MESSAGE(WM_TIMER,OnTimer)ON_MESSAGE(WM_LBUTTONDOWN,OnLButtonDown)ON_MESSAGE(WM_RBUTTONDOWN,OnRButtonDown)END_MESSAGE_MAP()LRESULT CDemoWnd:OnLButtonDown(WPARAM wParam,LPARAM lParam)SetTimer(1,1000,NULL);return 0;LRESULT CDemoWnd:OnRButtonDown(WPARAM wParam,LPARAM lParam)KillTimer(1);return 0;LRESULT CDemoWnd:OnPaint(WPARAM wParam,LPARAM lParam)CPaintDC dc(this);CPen Pen, *poldpen;CBrush Brush, *pOldBrush;switch (m_nState)case 0:Brush.CreateSolidBrush(RGB(0, 150, 255); /紫色m_nState = 1;break;case 1:Brush.CreateSolidBrush(RGB(0, 255, 100); /蓝色m_nState = 2;break;case 2:Brush.CreateSolidBrush(RGB(200, 0, 200); /青色m_nState = 0;break;pOldBrush = dc.SelectObject(&Brush);Pen.CreatePen(PS_SOLID, 3, RGB(255, 0, 0);poldpen = dc.SelectObject(&Pen);dc.Rectangle(300, 100, 800, 500);dc.SelectObject(poldpen);dc.SelectObject(pOldBrush);return 0;LRESULT CDemoWnd:OnTimer(WPARAM wParam,LPARAM lParam)CRect rt(40, 40, 1000, 1000);InvalidateRect(&rt);return 0;BOOL CDemoApp:InitInstance()CDemoWnd *pMainWnd = new CDemoWnd();pMainWnd-Create(NULL,Demo Mini-MFC);pMainWnd-ShowWindow(m_nCmdShow);pMainWnd-UpdateWindow();m_pMainWnd = pMainWnd;return TRUE;四、运行结果五、定时器消息编程的步骤,以及程序设计过程中需要注意的问题;1、 启动定时器使用SetTimer 函数创建一个定时器,并制定超时时间,然后启动定时器。该函数说明如下:UINT SetTimer(UINT nIDEvent, / 定时器标识符UINT nElapse, / 定时时间,单位是毫秒void (CALLBACK EXPORT* lpfnTimer) / 定时器回调函数地址(HWND, UINT, UINT, DWORD);示例代码:SetTimer(1,200,NULL);2、 销毁定时器定时器在不使用时要使用KillTimer 函数进行销毁,该函数说明如下:BOOL KillTimer(int nIDEvent / 定时器标识符);示例代码:KillTimer(1);应注意:WM_TIMER消息的应用消息号:WM_TIMERwTimerID = wParam; / 定时器标识符tmprc = (TIMERPROC *) lParam; / 定时器回调函数的地址其中,定时器回调函数在使用SetTimer 启动定时器时指定,如果没有指定定时器回调函数则可直接通过消息映射处理WM_TIMER 消息。六、实验总结通过本次实验,我进一步的熟悉了Visual Studio 软件的开发环境,对这个软件有了更深的了解。熟悉了 Visual Studio开发环境, 学习和掌握了 MFC消息映射的操作步骤,并且掌握MFC 编程模式中定时器的使用方法.,进一步掌握了在Visual Studio中调试程序的方法。在实验中我也复习了以前的实验中学到的在Visual Studio 开发环境调试程序的方法,并且可以更加熟练的应用其来修改程序。我也理解了定时器消息编程的步骤。在实验过程中,我也遇到了一些困难,比如不够熟悉Visual Studio软件的应用,忘记在后面销毁定时器,忘记改变项目中Demo的属性。经过老师和同学的指导,我学会了解决这些问题的办法。在实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脑干出血术后护理查房
- 山西省晋源区第七小学2025年三年级数学第二学期期末经典模拟试题含解析
- 四川音乐学院《设计素描(1)》2023-2024学年第二学期期末试卷
- 中央司法警官学院《文化哲学》2023-2024学年第二学期期末试卷
- 襄樊市南漳县2025届数学五下期末教学质量检测试题含答案
- 辽宁理工学院《化工应用软件实践》2023-2024学年第二学期期末试卷
- 浙江理工大学《商务英语写作(二)》2023-2024学年第二学期期末试卷
- 重庆护理职业学院《数据结构》2023-2024学年第二学期期末试卷
- 延安大学《数据分析与数据挖掘》2023-2024学年第二学期期末试卷
- 娄底职业技术学院《导演学》2023-2024学年第二学期期末试卷
- 公路桥梁和隧道工程施工安全风险评估指南_图文
- 田径运动会各种用表、检录表、统计表(朱)
- 固体矿产勘查原始地质编录细则
- 如何加强思想政治教育-增强教育的时代感和感召力
- 奖励协议书范本
- IEC61215:2021-2地面光伏组件-测试内容,,中文
- 机械完整性管理ppt课件
- 中国药科大学药物分析第六版第十四章中药制剂分析ppt课件
- 钢中马氏体组织形态、稳定化
- 内窥镜PACS系统解决方案
- 离心式鼓风机设计(毕业论文)
评论
0/150
提交评论