VC++中Progressbar的逐渐增加

Posted

技术标签:

【中文标题】VC++中Progressbar的逐渐增加【英文标题】:Gradual Increase in Progressbar in VC++ 【发布时间】: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 次?似乎合法。 其实我想上传一个文件,取决于进度条应该运行。请指导我 将最大范围设置为文件的大小。传输时,将位置设置为传输的字节数。 【参考方案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);

【讨论】:

以上是关于VC++中Progressbar的逐渐增加的主要内容,如果未能解决你的问题,请参考以下文章

增加由progressbar.js 创建的饼图的大小(宽度和高度)

增加progressbar.js创建的饼图(宽度和高度)的大小

[UE4]ProgressBar,进度条

后台线程中的进度条.setProgress(variable)

C++ 中带有 Gtkmm 的 ProgressBar

c#中 progressbar 进度条控件怎么开始???