先上效果图:
步骤:
- 先在xxxDlg.cpp程序内声明全局变量
CTime beg_tm, cur_tm;//一个记录程序开始的时间,一个利用OnTimer函数记录当前时间
CTimeSpan span;//记录时间差
- 在程序初始化时记录程序开始时间并启动定时器。在OnInitDialog()函数里添加:
beg_tm = CTime::GetCurrentTime(); //获取当前系统时间
SetTimer(1, 1000, NULL); //启动定时器
- 在对话框界面设计页面,页面设计如下:
注意每个编辑框的ID,如 天 前面编辑框ID设置为IDC_EDIT5,以此依次设计时分秒相应对话框ID。 - 添加消息处理函数OnTimer()。在函数里添加如下代码:
void CMFCCurTimeDlg::OnTimer(UINT_PTR nIDEvent)
{
int day, hour, min, sec;
// TODO: 在此添加消息处理程序代码和/或调用默认值
cur_tm = CTime::GetCurrentTime(); //获取当前系统时间
span = cur_tm - beg_tm;
day=span.GetDays();
hour=span.GetHours();
min=span.GetMinutes();
sec=span.GetSeconds();
CString str2;
str2.Format(_T("%d"), sec);//格式转换
LPCTSTR pStr = LPCTSTR(str2);
SetDlgItemText(IDC_EDIT1, pStr); //显示秒
CString str3;
str3.Format(_T("%d"), min);
LPCTSTR pStr1 = LPCTSTR(str3);
SetDlgItemText(IDC_EDIT3, pStr1);//显示分
CString str4;
str4.Format(_T("%d"), hour);
LPCTSTR pStr2 = LPCTSTR(str4);
SetDlgItemText(IDC_EDIT4, pStr2);//显示时
CString str5;
str5.Format(_T("%d"), day);
LPCTSTR pStr3 = LPCTSTR(str5);
SetDlgItemText(IDC_EDIT5, pStr3);//显示天
CDialogEx::OnTimer(nIDEvent);
}