CTime t = CTime::GetCurrentTime();
CString s;
s。Format("%d-%d-%d %d:%d:%d",t。GetYear(), t。GetMonth(), t。GetDay(), t。
GetHour(), t。GetMinute(), t。GetSecond());
coutSetWindowText(sTime);
SetTimer(1,1000,NULL);
回到窗体设计,右键单击窗体的空白处选ClassWizard。
Option ID选CTimeDlg(也可能是CTimeApp),Message里双击WM_TIMER,下面的列表能看到出现了OnTimer函数。点右边的代码编辑按钮编辑OnTimer函数。
原来那句不动,在那句上面加下面的代码:
CTime t = CTime::GetCurrentTime();
CString sTime;
sTime。
Format("%d-%d-%d %d:%d:%d",t。GetYear(), t。GetMonth(), t。GetDay(), t。GetHour(), t。GetMinute(), t。GetSecond());
((CWnd *)GetDlgItem(IDC_STATIC))->SetWindowText(sTime);
其实就是对文本框赋值,跟上面大致一样。
再打开ClassWizard,选CTimeDlg,双击WM_DESTROY,并打开OnDestroy的编辑。添加一行代码:
KillTimer(1);
程序完成,可以编译运行了。
===================
要想前面加0可以在格式符中间用数字0加总长度的写法。
把Format里的
"%d-%d-%d %d:%d:%d"
改成
"%04d-%02d-%02d %02d:%02d:%02d"
SetTimer里的第一个参数是为了KillTimer写的,KillTimer的作用是中止计时器。比如你想控制计时的开始和中止,就必须要用KillTimer,它的参数只有一个,带入的值就是SetTimer里的第一个参数。
第二个参数写成NULL的话在这个程序里表面看起来一样,但实际是每1毫秒都在执行OnTimer里的代码。本来每1秒执行一次就行了的,却要每毫秒都在刷新,给系统增加了不必要的负担。
全部