




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC+七种延时方法:一、1:在头文件*.h中定义一个非零的定时器句柄: int timer1;2:在*.cpp文件的构造函数中初始化句柄: timer1=1;3:首先调用函数SetTimer()设置定时间隔void CMulti_TimerDlg:OnButtonTime1() int iInstallReFlag;iInstallReFlag=SetTimer(timer1,100,NULL);/定时100msif(iInstallReFlag=0)MessageBox(Can not install timer!);4:在应用程序中增加定时响应函OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作; 如完成Sum每隔100ms自加1次,一共自加100次:void CMulti_TimerDlg:OnTimer(UINT nIDEvent) if(nIDEvent=(UINT)timer1) /即添加定时时间到的处理操作Sum+;SetDlgItemInt(IDC_EDIT1,Sum,true);if(Sum=100)KillTimer(timer1);MessageBox(Sum每隔100ms自加1次,一共自加100次已完成!);Sum=0;CDialog:OnTimer(nIDEvent);二、使用sleep函数实现延时,在程序需要延时的地方加入如下代码即可: Sleep(n);/其中n为延时的时间,单位为ms三、1:利用COleDateTime类和COleDateTimeSpan类来实现秒级延时: 在程序需要延时的地方添加如下代码即可:void CMulti_TimerDlg:OnButtonTime3() COleDateTime start_time = COleDateTime:GetCurrentTime(); COleDateTimeSpan end_time = COleDateTime:GetCurrentTime()-start_time; while(end_time.GetTotalSeconds() m_hWnd,WM_UPDATETIME1,0,0);while(End_time.GetTotalSeconds()1) /实现延时1秒 End_time = COleDateTime:GetCurrentTime()-Start_time; return 0; e:在需要的地方开启定时器: void CMulti_TimerDlg:OnButtonTime31() AfxBeginThread(ShowTime3_1_Proc,this);/开启定时器 四、1:利用GetTickCount()函数来实现延时: 在程序需要延时的地方添加如下代码即可:void CMulti_TimerDlg:OnButtonTime4() SetDlgItemInt(IDC_EDIT3,0,true);DWORD dwStart = GetTickCount();DWORD dwEnd = dwStart;do MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg);/以上四行是实现在延时或定时期间能处理其他的消息, /虽然这样可以降低CPU的占有率,/但降低了延时或定时精度,实际应用中可以去掉,去掉后误差降低。dwEnd = GetTickCount()- dwStart; while(dwEnd m_hWnd,WM_UPDATETIME2,0,0);/发送消息通知对 /话框该更新时间了dodwStop = GetTickCount();while(dwStop-10SendMessage(WM_UPDATETIME4,0,0); /timeKillEvent(TimerID_1ms); /AfxMessageBox(在此回调函数中安排需要执行的任务); 7:添加自定义定时器定时到的相关处理消息即程序,向timer3中第2点一样: #define WM_UPDATETIME4WM_USER+1003 void OnUpdateTime4(); ON_MESSAGE(WM_UPDATETIME4,OnUpdateTime4) void CMulti_TimerDlg:OnUpdateTime4() struct _timeb timebuffer;char *timeline;/获得毫秒级的时间_ftime( &timebuffer );timeline = ctime(&(timebuffer.time);/格式化时间CString m_Str;m_Str.Format(%.19s.%hu %s, timeline, litm, &timeline20);SetDlgItemText(IDC_EDIT5,m_Str); 8:启动多媒体定时器: void CMulti_TimerDlg:OnButtonTime6() TimerID_1ms = timeSetEvent(wTimerRes_1ms, wAccuracy,(LPTIMECALLBACK) OneMilliSecondProc,(DWORD)this,TIME_ONESHOT); 或 void CMulti_TimerDlg:OnButtonTime61() TimerID1_1ms = timeSetEvent(wTimerRes_1ms, wAccuracy,(LPTIMECALLBACK) OneMilliSecondProc1,(DWORD)this,TIME_PERIODIC); 七、1:使用QueryPerformanceFrequency()和QueryPerformanceCounter()函数来实现ms级或微秒级延时: ms级级延时 (占用CPU高并没响应) void CMulti_TimerDlg:OnButtonTime7() LARGE_INTEGER litmp; LONGLONG QPart1,QPart2;double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart; / 获得计数器的时钟频率QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart; / 获得初始值doQueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;/ 获得中止值 dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq; / 获得对应的时间值,单位为秒while(dfTim0.001);CString str1;str1.Format(%.12f,(dfTim-0.001)*1000);SetDlgItemText(IDC_EDIT6,str1);MessageBox(1ms延时已到,其误差为文本框中的值,单位为ms!); 微秒级延时 void CMulti_TimerDlg:OnButtonTime71() LARGE_INTEGER litmp; LONGLONG QPart1,QPart2;double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart; / 获得计数器的时钟频率QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart; / 获得初始值doQueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;/ 获得中止值 dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq; / 获得对应的时间值,单位为秒while(dfTimm_hWnd,WM_UPDATETIME6,0,0);/发送消息通知对话框该更新时间了doQueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;/ 获得中止值 dfMinus = (double
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60335-2-97:2023 EXV-CMV EN Household and similar electrical appliances - Safety - Part 2-97: Particular requirements for drives for shutters,awnings,blinds and similar
- 【正版授权】 ISO/IEC 9594-5:2020/AMD1:2025 EN Information technology - Open systems interconnection - Part 5: The Directory: Protocol specifications - Amendment 1: Miscellaneous enhancem
- 物流运输成本控制表格
- 制造业表格:产品分类表
- 印度入学考试试题及答案
- 医院出纳考试试题及答案
- 医用设备考试试题及答案
- 六一儿童节礼服活动方案
- 六一围棋活动方案
- 六一异地活动方案
- 2025年江西报业传媒集团招聘题库带答案分析
- 公司退货流程管理制度
- 东南亚艺术概论智慧树知到答案章节测试2023年云南艺术学院
- (完整版)食品安全自查、从业人员健康管理、进货查验记录、食品安全事故处置保证食品安全规章制度
- 《霸王茶姬》认证考核试题附答案
- 集装箱冷板式液冷数据中心技术规范
- GB/T 7106-2019建筑外门窗气密、水密、抗风压性能检测方法
- GB/T 28046.4-2011道路车辆电气及电子设备的环境条件和试验第4部分:气候负荷
- (精心整理)考试作文格纸
- 仓库管理员培训教材课件
- (新版)供电可靠性理论考试题库大全-上(单选、多选题)
评论
0/150
提交评论