方法1:
單執行緒方式。
將你的任務分成多個部分,每執行一部分,就更新一下進度條。
這種方法就是很煩人。
方法2:
雙線程方式。
主線程負責完成你想要的工作。副執行緒負責更新進度條。
更新進度條可以按照計時方法,或者根據主線程完成任務的狀態來更新。
因此,你的主線程在完成任務時,還得用乙個臨界區隨時報告任務的完成狀態。
方法3:
雙線程方式
主線程負責更新進度條,並且建立副執行緒完成任務的某部分工作。但這和單執行緒很像。
圖一 例子效果
玩過破天的朋友知道,遊戲更新時進度是用位圖表示的,我覺的挺漂亮的,於是自己動手做了乙個類來實現那種效果。
這個類的名字叫cbmpprogctrl,繼承於cstatic,使用方法如下。
1、首先要將bmpprogctrl.h和bmpprogctrl.cpp新增到工程中。
2、匯入兩幅位圖,作為前景和背景。資源標識分別為idb_fore和idb_back.
3、在對話方塊上,放置乙個"static text"控制項,修改其id,只要不是預設的idc_static就可以了。
4、讓這個控制項和乙個control型別的變數關聯,如變數名可以叫m_bmpprog。
5、找到該變數定義的地方,應該是cstatic m_bmpprog,修改cstatic為cbmpprogctrl。並將標頭檔案bmpprogctrl.h包含進來。
6、呼叫該類的方法。
類成員方法介紹:
void getrange(int &lower,int &upper)返回進度條範圍。
int getpos()獲得當前位置
int stepit( )以當前步長使進度條增長
int setstep( int nstep )設定步長
int setpos( int npos )設定位置
void setrange( int nlower, int nupper )設定進度條範圍。
具體的可以看源**。你可以修改它以符合自己的需要。你可能覺的這些方法很熟悉,是的,我參考了cprogressctrl的方法名。
結束語
這個東西,比較簡單,你可以很容易就使用。
在vc裡想改變進度條顏色,在網上找了很多方法,都很麻煩,覺得很鬱悶。後來想起在用vb做時,增經用api實現過,很簡單。後來再一查,原來是sendmessage這個函式,幾經試驗,終於成功,高興,與大家分享!!!!
**如下:
m_progress1.sendmessage(pbm_setbkcolor, 0, rgb(0, 0, 255));//背景色為藍色
m_progress1.sendmessage(pbm_setbarcolor, 0, rgb(255, 0, 0));//前景色為紅色
以下摘自《新編win32api大全》:
以下摘自msdn:
rgb(red, green, blue)
arguments
redrequired. number in the range 0-255 representing the red component of the color.
green
required. number in the range 0-255 representing the green component of the color.
blue
required. number in the range 0-255 representing the blue component of the color.
二、去掉進度條邊框
m_progress1.modifystyleex(ws_ex_staticedge,0);
m_progress.invalidate(false);
進度條控制項
base.dispose disposing region windows 窗體設計器生成的 設計器支援所需的方法 不要 使用 編輯器修改此方法的內容。private void initializecomponent this.progressbar1 new system.windows.form...
進度條控制項
當我們在做乙個大大小小的專案的時候,可能會遇到顯示乙個進度或百分比的問題,如果只用乙個數字表示給客戶帶來的是很死板的感覺。如果用乙個進度條來表示就會使客戶一目了然了,還很形象。下面是我的進度條控制項 7toolboxdata hbprocessbar 8public class hbprocessb...
控制項 CProgressCtrl 進度條
進度條控制項 使用進度條顯示操作進度 進度條控制項封裝在cprogressctrl類中。1 setrange和setrange32方法用來設定進度條顯示範圍。語法格式 void setrange short nlower,short nupper void setrange32 int nlower...