通过工具向USB设备写文件,但想有个进度条去显示写文件进度,该怎样实现??

解决方案 »

  1.   

    进度条,你可以写1M的数据,然后记好时间,然后就根据这个换算关系来灵活的设置进度条。
    例如你可以在写文件之前 将文件的大小得到,然后根据换算关系算出多少秒赋给一个全局变量。
    m_progress.SetRange(0,sec);//这里的sec就是你算出来的。
    m_progress.SetPos(0);
    然后你就SetTimer(1,1000,NULL);
    MyDlg::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    extern int sec;
             extern int i;
    if (i<sec)
    {
    i+=1;
    m_progress.SetPos(i);
    m_progress2.SetPos(i);
    }
    else
    {
    AfxMessageBox("解包完毕!");
    CDialog::OnCancel();
    }

    CDialog::OnTimer(nIDEvent);
    }
      

  2.   

    CProgressCtrl myCtrl;
    .............
                     myCtrl.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, CRect(100,1,400,30), 
    pStatusBar, 1);
    myCtrl.SetRange32(0,DataBase.lRowBlock);
    .................... for(int i=0;i<DataBase.lRowBlock;i++)
    {
    myCtrl.SetPos(i);
                               ................
                      }
      

  3.   

    CProgressCtrl m_progress;
    忘了跟你说了,m_progress这个变量可以通过类向导加进去。你应该知道VC 有个进度条控件吧。我只是 把大体的思路告诉你了,你要是觉得这样可行你就试试吧。
      

  4.   

    最简单的方法,不用creat这个空间,把这个控件直接拖动到你的对话框里面,用的时候设置一些参数,就像上面几位给的例子那样,不行就看MSDN,不是很难
      

  5.   

    1 SetRange
    2 SetPos
    3 SetStep
    4 StepIt
    5 StepIt
    6 StepIt
    7 ..
    8 ..
      

  6.   

    CProgressCtrl m_progress; m_progress.SetRange(0,100)
     m_progress.SetPos(50);//设到中间点还有其他函数:
    SetStep,StepIt