只要能在屏幕上比较准确的显示时间就行了,不要求界面美观,在CStatic中显示都行,我想是不是应该专门为它建个线程,这个线程不断
的取系统时间并显示,可是隔多久取一次呢?(我的要求是尽量减少开销,但又要准确,精确到秒),请高手帮我写写代码。

解决方案 »

  1.   

    用settimer,间隔设为1秒,在ontimer里面用CTime类得到时间然后显示
      

  2.   

    用SetTimer就可以  OnTimer里不断的取时间
    也可以用线程,怎么都行
      

  3.   

    void CAaView::OnTimer(UINT nIDEvent) 
     {
     
              RedrawWindow();
     CDC pDC;

     pDC.m_hDC=::GetDC(NULL);     COleDateTime time;  int h=time.GetCurrentTime().GetHour();
     int m=time.GetCurrentTime().GetMinute();
     int s=time.GetCurrentTime().GetSecond();
     CString str;
     str.Format("%2d:%3d:%2d",h,m,s);
         //CRect rect(300,0,100,20);
    // pDC.DrawText(str,rect,DT_PATH_ELLIPSIS );
    pDC.TextOut(300,10,str);  ReleaseDC(&pDC);
    CView::OnTimer(nIDEvent);
    }别忘了初始化时SetTimer(500);吧
      

  4.   

    void CMainFrame::OnTimer(UINT nIDEvent)
    {
    if (nIDEvent == uClockID)
        CString sTime=LPCTSTR(CTime::GetCurrentTime().Format("%H:%M"))
    //然后想怎么办都可以了
    }
      

  5.   

    我这个人的缺点就是太注重效率,让我去做低级程序说不定会有我的一片天空!
    开个玩笑!我还有问题,显示时间的确很简单,这我也知道,我一直在想是取时间好呢,还是取一次时间,然后在以后的OnTimer中加时间,加到10次后,再读一次系统时间,然后再在以后的9次中每次增加一秒,这样效率肯定会高,而且我认为公司经理一定看不出来,你们说这样行不行?
    因为取系统时间,再格式化输出,感觉太耗CPU资源,而且,说不定经理某一天心血来潮让精确到0.1秒显示一次怎么办?就更耗CPU资源了,我这个人整天想的是如何在同时间内做更多的事,或是同样的事让CPU空闲久一点,让他好散热!:)
      

  6.   

    hehe,楼主的方法很巧妙,应该可以做到.
      

  7.   

    kindpop1() 你不明白我的意思,不过非常感谢你!我是想怎么样尽量减少取系统时间的次数,还要保证时间显示的正确性,及时性。