在C ++中显示一个简单的进度条

时间:2010-04-29 11:25:00

标签: c++

问题在于: 我想在C ++函数执行期间显示一个进度条(就像“剩余35%......”这样的文本)。我已经完成了第一部分,即进度条,但问题是如何在其他函数执行期间显示进度条?

我只想在执行进入特定功能时开始显示条形,并在离开功能时达到100%。 我如何在C ++中执行此操作?有什么建议吗? 提前谢谢!

/尼古拉斯

3 个答案:

答案 0 :(得分:2)

使用单独的线程更新进度条。这应该会给你的申请“近乎真实”的进展。

答案 1 :(得分:1)

有两件事需要考虑。首先,您何时更新进度条?通常,这可以通过将函数所做的工作划分为刻度来完成,然后使用每次函数提前一个刻度时增加的刻度计数。一个例子是:

void SomeFunction() {
    for ( int i = 0; i < 1337; i++ ) {
        // do important stuff
        ProgressBar.IncreaseTickCount();
    }
}

然后调用者会这样做:

ProgressBar.SetNumberOfTicks( 1337 );
SomeFunction();

这样,进度条就能够在循环的每次迭代中重新计算其值。如何在屏幕上显示它取决于您的GUI框架。正如suggested by @Amit以及对其答案的评论一样,您很可能在工作线程中运行该函数,并且UI线程将持续更新进度条。在这种情况下,请确保滴答计数器是线程安全的。

答案 2 :(得分:0)

可以在ezProgressBar的单个文件中找到基于文本的简单标准样式进度条 。如果您愿意,可以将其包装在一个主题中。一个不错的功能是将打印最小化到单行,这样开销非常便宜,而且你不需要玩游戏就能找到神奇的“重置光标到行首”字符,如'\ r'。