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创建的饼图(宽度和高度)的大小