做一个演示程序
每一步需要间隔一段时间(比如1s)再继续进行
请问大虾们应如何实现?

解决方案 »

  1.   

    最简单是Sleep(1000);
    如果中间要相应消息,
    用定时器把
    SetTimer
    然后处理WM_TIMER消息或者直接调用函数
      

  2.   

    用API :SetTimer(hwnd,id,1000,NULL) ;
      

  3.   

    同意楼上的.不过估计sleep(1000)就可以了.
      

  4.   

    我用过sleep
    可是当sleep时屏幕上根本没反应的
    然后就跟死了一样
    过一段时间后出现,结果是正常的
    可是我要在中间过程中显示
    画图函数在ondraw里面
    应该怎么处理呢?
      

  5.   

    //*************自定义延时函数,该函数与Sleep()不同在于可以响应消息**********
    void CAviFile::SleepTime(DWORD dwMilliseconds)
    {
        DWORD start, nowtime;
        //start = timeGetTime();
    start=GetTickCount();
        do
        { 
            MSG msg;
            if (::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) 
            { 
    //::TranslateMessage (&msg);    //翻译消息
                //::DispatchMessage (&msg);    //撤去消息
      
                if ( !AfxGetApp()->PumpMessage() ) 
                {
                    ::PostQuitMessage(0);
                    return;
                }
            }
    //        nowtime = timeGetTime();
    nowtime=GetTickCount();
        }while((nowtime-start)<dwMilliseconds);
    }
      

  6.   

    学点SDK吧,看看楼上的代码,多好啊!
      

  7.   

    SetTimer()是比较简单可行的,
    至于上面的SleepTime()当然也是个不错的选择,希望它不会把你搞胡涂了。
      

  8.   

    to  duwenyong(啸海):
    非常感谢!
    代码我已经试过了
    非常好
    马上结帐^_^
    顺便问一个小问题
    我用invalidate刷屏
    请问还有其他的方式吗?
    谢谢
      

  9.   

    还有,但最后的目的都一样,就是让窗口重画。
    其实,如果OnDraw()处理的好的话,更新数据时不必劳OnDraw()大驾。
    如果Ondraw()里面东西太多,处理闪烁也是个问题。