-2

我在VC++中創建了一個進度條。VC++中Progressbar的逐漸增加

但是這個進度條並沒有顯示出逐漸增加。它在關卡中來回跳舞。

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(); 
} 

請告訴我如何顯示進度條的逐步增加

+1

因此,您將範圍設置爲100,並且您調用'StepIt' 10000次?似乎是合法的。 –

+0

其實我想上傳一個文件,並取決於進度條應該運行。請在此指導我 – user1465461

+0

將最大範圍設置爲文件大小。在傳輸時,將位置設置爲傳輸的字節數。 –

回答

0

不是一個答案,只是鉛:

  • 獲取的百分比[0..100]
  • 步驟只在必要時

在一個線程中做類似:

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

你這樣做的方式,它會轉過身來。

如果您知道您將採取的步驟數量,那麼您可以使用StepIt,因此它會在完成這些步驟後採取措施。

另一種方法是使用OffsetPos。假設你將文件和偏移量的計數設置爲已經處理的字節數。由於這些預計會很大,改進的解決方案可以計算百分比,並使用它來保持0-100的範圍。

尼斯文檔here和相鄰頁面上。