EVC对话框下实时显示系统时间时 “秒”跳动正常,“分”不跳动,这是什么原因啊,很诡异!期待各位高手解决ing……
以下是小弟代码:
void CCheckViewDlg::OnTimer(UINT nIDEvent)  
{
// TODO: Add your message handler code here and/or call defaultCDialog::OnTimer(nIDEvent);
  strtime=getCurrentTime();
m_ctrlInfo.SetWindowText(strtime);}void CCheckViewDlg::OnDestroy()  
{
CDialog::OnDestroy();// TODO: Add your message handler code here
KillTimer(1);
}CString CCheckViewDlg::getCurrentTime()
{
TCHAR strTime[50];
CTime curtime=CTime::GetCurrentTime();
swprintf(strTime,_T("%04d-%02d-%02d %02d: %02d: %02d"),curtime.GetYear(),curtime.GetMonth(),curtime.GetDay(),curtime.GetHour(),curtime.GetMinute(),curtime.GetSecond());
CString nTime=(CString)strTime;
return nTime;
}在initdialog类中 SetTimer(1,1000,NULL);
m_ctrlInfo是显示静态框的变量 CStatic类型。 显示 “分 ” 时偶尔会变一下,可以肯定的是跟系统时间不一致。

解决方案 »

  1.   

    看不出有什么问题
    试一下下面的代码
    CString CCheckViewDlg::getCurrentTime()
    {
    CString strTime;
    COleDateTime curTime = COleDateTime::GetCurrentTime();
    strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"),curTime.GetYear(),curTime.GetMonth(),
    curTime.GetDay(),curTime.GetHour(),curTime.GetMinute(),curTime.GetSecond());
    return strTime;
    }
      

  2.   

    跟踪调试一下。你的代码有问题,正确应该是
    CString CCheckViewDlg::getCurrentTime()
    {
    CString strTime;
    COleDateTime curTime = COleDateTime::GetCurrentTime();
    strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"),curTime.GetYear(),curTime.GetMonth(),
    curTime.GetDay(),curTime.GetHour(),curTime.GetMinute(),curTime.GetSecond());
    return strTime;
    }
      

  3.   

    COleDateTime curTime = COleDateTime::GetCurrentTime();
    可以改一下,只用它一次。
    然后定义几个变量,对这几个变量进行操作
    在OnTime()中秒钟不停的加1;秒遇60时,分钟加1,分钟60时,小时加1,这样往后摧下去应该可行的。