SetTimer(0 , 1000 ,0);
SetTimer(1 , 9000,0);void CtestDlg::OnTimer(UINT_PTR nIDEvent)
{
switch(nIDEvent)
{
case 0:
                 Sleep(800);
break;
case  1:
Sleep(8000);
break;
default:
break;
} CDialog::OnTimer(nIDEvent);
}程序运行后,窗体不响应。
这个问题怎样解决?谢谢。

解决方案 »

  1.   

    WM_TIMER消息在主线程中处理,结果你OnTimer里面在不停Sleep,那还怎么响应!!
      

  2.   


    void _Sleep_(UINT Delay_ms)
    {
      DWORD dwTick = GetTickCount() + Delay_ms;
      while(GetTickCount() < dwTick)
      {
        MSG msg;
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
          if (msg.message == WM_QUIT) break;
          TranslateMessage(&msg);
          DispatchMessage(&msg);
        }
        Sleep(0);
      }
    }//本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zgl7903/archive/2010/03/15/5382869.aspx
    你的主线程的消息被阻塞了,自然响应不了其它界面操作,
    建议新开一个线程
      

  3.   

    sleep睡着了,延时尽量别用sleep。