如何实现每1秒钟进度条从0到100走一遍? 知道大概用到OnTimer,SetTimer,但弄了半天也实现不了

解决方案 »

  1.   

    用一个线程就可以了!每次是10毫秒!分100次!这样就可以了!
    http://download.csdn.net/source/1123495
    这是多线程的例子!
      

  2.   

    在BOOL CLvdsDlg::OnInitDialog()中初始化 m_progress.SetRange(0,100);
        m_progress.SetPos(0);
        m_progress.SetStep(10);
    运行的时候SetTimer(1, 800, NULL); //800毫秒循环一次
    void CLvdsDlg::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nIDEvent==1)
    {
     m_progress.StepIt();
     m_progress.SetPos(100);
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  3.   

    呵呵,你设置200毫秒!分5次!每次设置原来的基础上面加20!到100后,从0再开始!
    运行的时候SetTimer(1, 200, NULL); //800毫秒循环一次 void CLvdsDlg::OnTimer(UINT nIDEvent) 

    // TODO: Add your message handler code here and/or call default 
    if(nIDEvent==1) 

    m_progress.StepIt(); 
    int pos = (m_progress.GetPos()+20)%100;
    m_progress.SetPos(pos); 
    m_progress.Invalidate(FALSE);

    CDialog::OnTimer(nIDEvent); 
    }
      

  4.   

    你要把 800ms 分拆开来, 比如说每个80ms  分十次,每次刷新一下进度条。。你这样就是800毫秒直接从1跳到100 失去了进度条的意义了
      

  5.   

    这不是很简单么,搞个定时器。在定时器函数中SetPos