MFC中定时器及时间显示

这篇博客介绍了如何在MFC中使用定时器显示系统时间,并与FTP上传时间进行对比。通过SetTimer函数设置定时器,每1秒更新一次时间,使用OnTimer消息响应函数处理,结合CTime类进行时间格式转换,最终在Static控件中显示年月日时分秒。文章还探讨了构造函数与OnInitDialog的区别,强调定时器应在OnInitDialog中初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次设计中将会使电脑的系统时间显示到窗口,主要是用于FTP中与定时上传时间做对比。使用者设置上传时间,当本地时间到达时间时,触发函数,将文件进行上传。

显示时间之前需要了解消息响应。在MFC中可以自己设定消息,当触发时自动处理。本次设计中用到了定时器,SetTimer,该函数是CWnd类中的定时器,参数有三个,比如SetTimer(1,1000,NULL);前面的1代表的是定时器的标号,可以同时定义好几个定时器,不同的定时器就对应不同的标号。第二个参数是说每1000毫秒触发一次消息,向消息响应函数发送消息让其处理,这时就涉及到另一个函数,消息响应函数,OnTimer,它是重载的CWnd中的函数,跟SetTimer相对应,每当定时器触发一次,它就会执行一次,这个函数不能自己定义,需要在类向导中的消息中找到WM_TIMER消息,对其添加消息处理,这样就建立了一个消息映射机制,包括消息申明,消息映射,和消息实现,咱么前两个在对WM_TIMER添加消息处理函数后,就已经被设置好。这个函数的形参就对应着上面定时器的标号,在OnTime函数中用一个switch语句就可以对不同的定时器进行操作处理。然后就是对响应函数处理,用到的类是MFC的CTime类,它里面有关于时间的一些处理,可以在MSDN中查看,本例用的显示年月日时分秒,每1s刷新一次,使用的控件是Static那种静态的,然后将其ID改为ID_TIMER,在显示的时候将其与时间变来那个绑定即可显示。获取时间是使用的CTime类中的GetCurrentTime()函数,他是windows中获取时间函数GetTickCount()的预定义,其实是同一个函数,第一次见到这个函数是在编程之美的第一章,获取规定使用百分比的CPU。这个函数获取的是系统开始启动到调用这个函数时经过的毫秒数,其返回值类型为DWORD,调用这个函数两次并相减,就可以获取任何一段程序执行的毫秒数,当然时间只能精确到毫秒单位。

用GetCurrentTime()获取时间后需要将其转化为想要的显示格式,用Format进行显示处理,

CTime t=CTime::GetCurrentTime();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值