如何动态的显示程序运行的时间
2016-05-04 11:21
253 查看
假设你在做一个小软件,需要动态显示某个软件功能运行所花费的时间.就像杀毒那样,上面会有运行时间。动态显示很简单,首先想到的就是设置一个定时器,每隔一秒获取当前系统的时间,然后和程序刚运行的时间相减就能得出运行时间了。但是这样就有一个问题,假如中途你这个程序想要暂停一会,然后继续,你会发现,显示的时间突然跳变了,因为在你暂停的那一会,系统的时间是在流逝的,并不会暂停,只是你暂停显示了而已。而我想要的效果就是你暂停了,再继续时间还是接着原来的继续一秒一秒的变化.这里我介绍一种简单的方法,当然了精度也只能是1秒,如果需要高精度的朋友请自行google.
方法如下:
添加三个成员变量
并在构造函数中初始化为0
假设现在是你一按下开始按钮就开始运行时间,按下暂停按钮就暂停,再按就继续
所以你要在开始按钮事件函数中添加如下代码:
在暂停按钮中添加如下代码:
然后再定时器函数中添加如下代码:
其原理就是通过自定义的时间计数器通过定时器定时累加.
方法如下:
添加三个成员变量
UINT m_uSecond; //小时,分钟,秒 UINT m_uMinute; UINT m_uHour;
并在构造函数中初始化为0
假设现在是你一按下开始按钮就开始运行时间,按下暂停按钮就暂停,再按就继续
所以你要在开始按钮事件函数中添加如下代码:
CString s; s.Format(TEXT("%u:%u:%u"), m_uHour, m_uMinute, m_uSecond); SetDlgItemText(IDC_STATIC_TIME, s); SetTimer(1, 1000, NULL);
在暂停按钮中添加如下代码:
if(m_bPause == FALSE) { KillTimer(1); m_bPause = TRUE; SetDlgItemText(IDC_STATIC_TIME,TEXT("继续")); } else { SetTimer(1, 1000, NULL); m_bPause = FALSE; SetDlgItemText(IDC_STATIC_TIME,TEXT("暂停")); }
然后再定时器函数中添加如下代码:
if (m_uSecond == 59) { ++m_uMinute; m_uSecond = 0; } else if (m_uMinute == 59) { ++m_uHour; m_uMinute = 0; } CString s; s.Format(TEXT("%u:%u:%u"), m_uHour, m_uMinute, ++m_uSecond); SetDlgItemText(IDC_STATIC_TIME, s);
其原理就是通过自定义的时间计数器通过定时器定时累加.
相关文章推荐
- Python 对 验证码的使用
- ExtJS -- QuickTip TextField鼠标移过提示内容
- 设计模式之单例模式(Singleton)
- 应用程序怎样缩放自如地部署
- HealthKit
- hive metastore 后台启动
- Selectize.js插件使用简介
- iOS 获取当前时间
- Vim文件编码UTF-8
- Git错误总结
- 3005
- PHP $_SERVER['HTTP_HOST']与$_SERVER["SERVER_NAME"]的区别
- jsp简单功能属性
- 多进程
- HTTP 协议详解
- (好文转发)关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
- sql
- 什么是REST?以及RESTful的实现
- java导入项目乱码
- webapi