vs2010 狀態列新增進度條

2021-09-06 08:49:07 字數 1704 閱讀 5890

步驟:

<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...