版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
医用仪器软件设计——基于MFC波形绘制小工具设计实验08Contents.1实验内容2实验原理3代码分析文件读取与保存CDC类绘图定时器1.实验内容学习MFC中与文件读取和保存相关的类:CFileDialog和CFile,以及绘图相关的类CDC。然后设计一个具有以下功能的波形绘制小工具:①可以加载表格文件的数据;②在静态显示模式下,将加载的数据显示到文本显示区和波形显示区;③在动态显示模式下,根据加载的数据显示动态的波形;④可以将文本显示区中的数据保存到新建的表格文件中。2.实验原理2.1文件读取与保存CFileDialog::CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL);—文件对话框类CFileDialog第1个参数bOpenFileDialog为TRUE则显示打开文件对话框,为FALSE则显示保存文件对话框;第2个参数lpszDefExt指定默认的文件扩展名;第3个参数lpszFileName指定默认的文件名;第4个参数dwFlags用来自定义对话框的标志组合,默认为OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT;第5个参数lpszFilter指定可供选择的文件类型和相应的扩展名;第6个参数pParentWnd为父窗口指针{CStringfilePathName;charszFilters[]="CSVfile(*.csv)\0*.csv\0"\"\0";CFileDialogdlg(TRUE);//TRUE为OPEN对话框,FALSE为SAVEAS对话框
dlg.m_ofn.lpstrTitle=_T("OpenFile");
dlg.m_ofn.lpstrFilter=(LPCSTR)szFilters;if(dlg.DoModal()==IDOK)
{filePathName=dlg.GetPathName();}
}文件类型说明和扩展名间用“\0”隔开示例:打开一个对话框,标题为OpenFile,且仅显示后缀为.csv的文件。2.实验原理2.1文件读取与保存CFilefile;file.Open(LPCTSTRlpszFileName,UINTnOpenFlags,CFileException*pError=NULL);—读取和写入文件的接口CFile参数lpszFileName指定文件名,可包含文件路径,若只有文件名,则默认路径为项目路径;参数nOpenFlags指定文件打开模式;nOpenFlags的常用模式如下:CFile::modeCreate:若指定打开的文件不存在,则创建一个新文件,若文件已存在,则清空其中的数据。CFile::modeNoTruncate:与CFile::modeCreate配合使用,若文件不存在,则创建一个新文件,若文件已存在,则保留其中的数据。CFile::modeRead:以只读模式打开文件。CFile::modeWrite:以只写模式打开文件。CFile::modeReadWrite:以可读可写模式打开文件。参数pError为打开文件失败时用来接收失败信息的变量,通常设置为NULL。CFile::Open()//调用Open()函数创建或打开指定的文件。CFile::Read()//调用Read()函数进行文件读操作。CFile::Write()//调用Write()函数进行文件写操作。CFile::Flush()//调用Flush()函数刷新待写的数据。CFile::Close()//调用Close()函数关闭文件句柄。CFile操作文件函数2.实验原理2.2CDC类绘图CDC*pDC=GetDC(HWNDhWnd);pDC->MoveTo(oriPosition);pDC->LineTo(newPosition);ReleaseDC(pDC);通过CDC对象的成员函数绘制直线绘图前:先获取客户区大小和DC并设置绘图颜色,再根据用户操作来绘制图形。通过MFC类实现画线功能首先需要定义一个CDC类型的指针,并利用CWnd类的成员函数GetDC来获取当前窗口的设备描述表对象的指针然后利用CDC类的成员函数MoveTo()和LineTo()完成画线操作最后调用CWnd类的成员函数RealeaseDC释放设备描述表资源。2.实验原理2.3定时器通过定时器实现动态画图:设置一个时间间隔,然后系统便以此时间间隔周期性回调动态画图函数定时器的使用步骤UINTSetTimer(UINTnIDEvent,UINTnElapse,void(CALLBACKEXPORT*lpfnTimer)(HWND,UINT,UINT,DWORD));
一、使用SetTimer()函数设置定时器参数nIDEvent为新创建的定时器标识号码(非零),当一个应用程序需要多个定时器时,通过该参数进行区别;参数nElapse为定时器间隔,以ms为单位,每当达到一个时间间隔时,系统发送WM_TIMER消息;参数lpfnTimer为指定处理WM_TIMER消息的函数,通常为NULL,表示由CWnd对象的OnTimer成员函数来处理该消息二、超载OnTimer()函数,完成用户希望的操作通过第一步设置的定时器会按其设置的时间间隔向应用程序发送WM_TIMER消息,为了接收和处理该消息,应超载消息处理函数OnTimer(),其函数原型为:afx_msgvoidOnTimer(UINTnIDEvent);参数nIDEvent为定时器的标识。若在程序中设置了多个定时器,则靠此参数的不同来加以区别。三、清除定时器定时器使用完后,可以通过调用KillTimer()函数来清除定时器,其函数原型为:BOOLKillTimer(intnIDEvent);注意:KillTimer()函数不能放在析构函数中,可以放在DestroyWindow()函数中一个窗口包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年企业合规经营与法律风险管理测试
- 2026年教育心理学理论与实践应用测试题库
- 2026年民族地区普法宣传教育重点知识问答
- 2025-2030年普通塑料碗行业商业模式创新分析研究报告
- 吕布皮肤管理项目介绍
- 老年护理中的安宁疗护
- 初中历史情境教学法在爱国主义教育中的应用课题报告教学研究课题报告
- 高血压的早期识别与干预策略
- 类风湿关节炎常见症状及护理方式
- 《机电一体化技术》课件-4.3 压电传感器
- 国家事业单位招聘2025中国宋庆龄青少年科技文化交流中心招聘人员笔试历年参考题库典型考点附带答案详解
- 安徽省合肥市2026届高三下学期第二次教学质量检测政治卷及答案
- 共推生态墨脱建设方案
- 博士后导师协议书
- 专题06 拓展:对勾函数、飘带函数、V型函数、高斯函数的四大题型(高效培优专项训练)数学北师大版2019必修第一册(解析版)
- 2025年医疗器械自查报告模板
- 派安普利单抗注射液-临床用药解读
- 2025重庆机场集团有限公司社会招聘150人(第二次)笔试参考题库附带答案详解
- 药企消防安全培训课件
- 村镇建设科培训课件
- 室内概念方案汇报
评论
0/150
提交评论