【问题标题】:Gradual Increase in Progressbar in VC++VC++中Progressbar的逐渐增加
【发布时间】:2013-06-20 12:38:28
【问题描述】:

我在 VC++ 中创建了一个进度条。

但是这个进度条没有显示逐渐增加。它在关卡中来回跳舞。

myCtrl.Create( WS_CHILD | WS_VISIBLE, CRect  (100,140,300,170), this, 1 );
myCtrl.SetRange(0,100);
myCtrl.SetStep(2);
myCtrl.SetPos(0);

for(int i=0;i<10000;i++)
{
    myCtrl.StepIt();
}

请告诉我如何显示渐增的进度条

【问题讨论】:

  • 所以您将范围设置为 100 并调用 StepIt 10000 次?似乎合法。
  • 其实我想上传一个文件,取决于进度条应该运行。请指导我
  • 将最大范围设置为文件的大小。传输时,将位置设置为传输的字节数。

标签: c++ visual-studio visual-c++ visual-studio-2012 progress-bar


【解决方案1】:

你这样做的方式,它会转来转去。

如果你知道你将要走的步数,你就可以使用 StepIt,这样它就会走到尽头。

另一种方法是使用 OffsetPos。假设将范围设置为文件的字节数,将 OffsetPos 设置为已处理的字节数。由于预计会很大,因此改进的解决方案可以计算百分比,并使用它,保持 0-100 的范围。

很好的文档here 和相邻页面。

【讨论】:

    【解决方案2】:

    不是答案,只是线索:

    • 获取百分比 [0..100]
    • 仅在必要时采取措施

    在线程中执行类似的操作:

    if (round(100.0 * file.bytesLoaded / (double)file.totalBytes) > myCtrl.Getpos()) {
         myCtrl.StepIt();
         myCtrl.UpdateWindow();
    }
    Thread.Sleep(100);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2019-07-11
      • 2016-08-20
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多