最近在看VC++,看到状态栏的编程时,有一点是讲到在边框加上一个时间,并且让时间运行的例子。我把它放在对话框来完成,并加了一点小提示,很简单的程序,但毕竟是初学者,请高手别BS。
要求很简单: 1、按下开始按钮,在编辑框显示当前时间。
2、让时间运行。
3、按下对话框的关闭,显示提示,确定关闭时,显示已运行的时间。
第一步:响应开始按钮,在该函数里面用CTime::GetCurrentTime()获取当前系统时间,用CTime::Format()将时间按要求转换成字符,用SetDlgItemText()将字符串显示到编辑框。为了让编辑框的宽度巧好是获取时间字符串的宽度,用一函数来设定(纯粹是突发奇想),该函数式CEdit::GetRect().先使用GetTextExtend()获取时间字符串的宽度,结果放到CSize对象中,在用GetRect()设定即可。
第二步:让时间与系统时间同步运行,增加WM_TIMER消息响应,用SetTime()函数,每1000毫秒发送一次,其它操作与第一步相同。
第三步:点击弹出提示对话框。用到MessageBox(或AfxMessageBox()),当确定关闭时,显示运行的总时间,(开始时间与结束的时间差)。
总结:CTime 成员函数有许多可以用来转换的,我的想法就是获取时间的时,分,秒,然后保存在int变量中,然后再作差,接着在用itoa()转换成字符串,再拼接起来。这种方法显得有些“烦”,有没有比较好的办法呢?用MessageBox()输出,这样略显复杂,而且显示出来不是想要结果。例如我要输出的是:“运行时间:0:1:10”这样,用MessageBox好像无法满足,哪位有比较好的方法可以实现的?
部分截图: