....
SetTimer(1,300,NULL);
....void CTempDlg::OnTimer(UINT nIDEvent) 
{
Sleep(500);
        ...
CDialog::OnTimer(nIDEvent);
}Sleep(500),而定时器间隔只有300,在Sleep(500)还没完时定时器是否工作

解决方案 »

  1.   

    谢谢楼上,顺便还问一下,
    Sleep(500)后定时器马上执行OnTimer()还是等上300 ms再执行OnTimer()
      

  2.   

    Sleep实际上是将你的线程转入休眠,即是交出控制权并在500ms以内不会被调度到,Sleep(500)之后,你的线程并不一定马上被调度到,不过如果被调度到,它是从Sleep下一句开始执行的.你可以理解成,这个对这个程序而言,时间停顿了500ms
      

  3.   

    在执行OnTimer()的同时执行Sleep(500)
      

  4.   


    是马上执行,因为第二个消息WM_TIMER已经在队列中。不过消息队列里同时最多只能有一个WM_TIMER消息