用static 显示OnTimer 时间时,时间被重叠怎么办,代码如下?

解决方案 »

  1.   

    void CDisplayTime::OnTimer(UINT nIDEvent) 
    {

    char time[12];   
    if(nIDEvent==5)   
    {   
    SYSTEMTIME t;
    GetLocalTime(&t);  
    wsprintf(time,"%02d-%02d-%02d %02d:%02d:%02d",t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond);
    m_Time.Format("%s  %s",g_UserName,time);
    UpdateData(FALSE);
    }  
    CDialog::OnTimer(nIDEvent);
    }
      

  2.   

    代码呢?是不是你在OnTimer中用一个static变量存储初始时间,结果每次运行时变量都会被新时间所覆盖?
    如果是的话,有两种方法,一是采用类的成员变量或成员变量,当然这可能和你的意图相悖.
    二就是把给变量赋值的语句和声明语句放在一起,采用如static int a=0;的形式就会只赋一次值了.
      

  3.   

    void CPowerManagerDlg::OnTimer(UINT nIDEvent)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    if (nIDEvent == 1)
    {
    CTime Now = CTime::GetCurrentTime();
    CString strDateTime;
    strDateTime = Now.Format("当前时间:%Y-%m-%d %H:%M:%S"); GetDlgItem(ID_STATIC_TIME)->SetWindowText(strDateTime);
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  4.   

    laterballen(阿来) 只显示了年月日magicyang87(我爱刘岚)  就是,显示了前一秒如
    2007-08-23 19:23:45
    下一个时间是
    2007-08-23 19:23:462007-08-23 19:23:45  并没有消失.  这两个时间只有 最后一位不一样.所以 6就重叠在5上面看起就重叠了
      

  5.   

    GetDlgItem(ID_STATIC_TIME)->SetWindowText(strDateTime);
    是正确的。
      

  6.   

    是不是OnTimer间隔太短了,这个东西一般用起来都是秒级的,参数从1000往上设。
      

  7.   

    只显示年月日是你的控件太小了.
    把它拉大一点.
    可以在空间的caption属性中写一下xxxx-xx-xx xx:xx:xx确定大小
      

  8.   

    用SetWindowText(str)
    就不会出现时间值在一起的情况,(重叠)
    出现在一起一般都是自己在控件的DC上TexOut等等。
      

  9.   

    我试了下没问题,无论是用变量还是直接SetWindowText,事实上正如LS所说,想靠SetWindowText实现重叠是不可能的.LZ是不是贴错代码了?