簡體   English   中英

在C ++中顯示一個簡單的進度欄

[英]show a simple progress bar in C++

這是問題所在:我想在C ++函數執行過程中顯示進度條(就像“剩余35%...”之類的文本)。 我已經完成了第一部分,即進度條,但問題是如何在其他函數執行期間顯示進度條?

我只想在執行進入特定功能時開始顯示該條,並在離開該功能時達到100%。 如何在C ++中做到這一點? 有什么建議嗎? 提前致謝!

/尼克拉斯

使用單獨的線程更新進度條。 那應該給您的應用程序“接近真實”的進度。

有兩件事要考慮。 首先是,什么時候更新進度欄? 通常,這可以通過將函數所做的工作划分為多個滴答聲,然后使用每次增加一個滴答聲后增加的滴答聲計數來完成。 一個例子是這樣的:

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

然后,調用者將執行以下操作:

ProgressBar.SetNumberOfTicks( 1337 );
SomeFunction();

這樣,進度條將能夠在循環的每次迭代中重新計算其值。 如何在屏幕上顯示它取決於您的GUI框架。 正如@Amit和他的答案的注釋所建議的那樣 ,您很可能將函數運行在工作線程中,並且UI線程將不斷更新進度欄。 在這種情況下,請確保滴答計數器是線程安全的。

一個簡單的基於文本的標准樣式進度條可以在ezProgressBar的單個文件中找到 您可以根據需要將其包裝在線程中。 一個不錯的功能是將最少的打印量打印到一行,因此開銷非常便宜,並且您無需玩魔術般的“將光標重置到行首”字符(例如\\ r)就可以玩游戲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM