步驟:
<1> : 在cmainframe類中定義乙個變數:保護型別.
cprogressctrl m_progress;
<2> : 新增indicator指示器:
id_indicator_prog
<3> : 新增wm_paint事件,新增**如下
void cmainframe::onpaint()
else
m_progress.setpos(50);
}<4> : 如果要讓進度條顯示"動起來",在wm_time事件中新增:
m_progress.stepit();
在mainfrm.cpp檔案中指示器陣列indicators中新增這兩個資源id號.
static uint indicators = ;
1 在mainfrm.h中增加protected的成員變數cprogressctrl m_progress
2 在oncreate中新增如下**:
crect rect;
m_wndstatusbar.getitemrect(2,&rect); //獲取狀態列中第二項即進度欄的位置
m_progress.create(ws_child | ws_visible,// | pbs_vertical,
rect,&m_wndstatusbar,123); //建立進度欄,第乙個引數是屬性,可以是水平的豎直的,第二個引數是位置,第三個引數是父視窗指標,這裡設定為狀態列視窗,最後乙個引數隨便取的乙個id號。
m_progress.setpos(50); //設定進度條中當前進度,100為滿格,50為半格
這時執行發現不正確,矩形大小獲取不正確,這是因為在oncreate中狀態列還沒有建立完成,因此,獲取失敗,解決辦法可以是自定義訊息,當程式執行oncreate訊息時,將自定義的訊息放入訊息佇列中,當oncreate訊息執行完成後,再執行自定義的訊息響應函式。
3在mainfrm.h中#define um_progress wm_user+1 //自定義訊息號要大於wm_user
在mainfrm.h中新增訊息對映函式afx_msg lresult onprogress(wparam ,lparam);
在mainfrm.cpp中訊息對映中新增on_message ( um_progress, &cmainframe::onprogress )
在mainfrm.cpp中,訊息響應函式:
lresult cmainframe::onprogress(wparam ,lparam)
4最後在oncreate中呼叫postmessage(um_progress);//不能用sendmessage()因為這個函式傳送的訊息是立即響應的,即oncreate響應還沒結束就去響應自定義的訊息
在onpain()中重寫**
crect rect;
m_wndstatusbar.getitemrect(2,&rect);
m_progress.create(ws_child | ws_visible | pbs_smooth,
rect,&m_wndstatusbar,123);
m_progress.setpos(50);
此時將oncreate中postmessage(um_progress);注釋掉,因為建立視窗的過程就呼叫了onpain()函式。為了讓進度隨時間改變在定時器訊息處理函式中加入
m_progress.stepit();
狀態列中新增進度條
將進度條新增到狀態列中不是很困難,只要幾步就可以了 1.建立乙個form工程,在窗體上新增乙個狀態列stat,新增乙個進度條progressbar1 2.為了演示進度情況,再新增乙個timer1 3.在stat的屬性中,將showpanels設為true 4.在stat的panels屬性中新增乙個s...
在狀態列動態加進度條
一般情況下,我們可以建立非模式對話方塊並在上面顯示進度條。如果能夠利用狀態條,在狀態條中動態地新增並顯示進度條,將會更加方便直觀。下面將講述如何在delphi 5中程式設計實現在狀態條中動態地新增進度條。具體的過程如下 2 在窗體中新增乙個狀態列元件statusbar1,乙個button元件butt...
Delphi程式設計中在狀態列動態新增進度條
delphi程式設計中在狀態列動態新增進度條 一般情況下,我們可以建立非模式對話方塊並在上面顯示進度條。如果能夠利用狀態條,在狀態條中動態地新增並顯示進度條,將會更加方便直觀。下面將講述如何在delphi 5中程式設計實現在狀態條中動態地新增進度條。具體的過程如下 2 在窗體中新增乙個狀態列元件st...