MFC控制項(三)(進度條控制項和滑塊控制項)

2021-06-04 17:21:18 字數 2872 閱讀 5747

進度條控制項

使用進度條顯示操作進度:

進度條控制項封裝在cprogressctrl類中。

1、setrange和setrange32方法用來設定進度條顯示範圍。

語法格式:

void setrange(short nlower, short nupper);

void setrange32(int nlower, int nupper);

nlower:最小值,預設0;

nupper:最大值。

setrange方法設定進度條範圍在短整型範圍,setrange32可在整數範圍。

2、設定進度條進度:setpos方法

int setpos(int npos);

npos:表示設定的新進度。返回值為之前的進度。

3、獲得進度條進度:getpos方法

int getpos();

返回值為當前顯示進度。

示例:靜態文字控制項變數:cstatic  m_number;

進度條控制項變數:cprogressctrl  m_progress;

按鈕單擊事件:onstart

void cprogressdemodlg::onstart()

const int nmaxvalue = 99999;

m_progress.setrange32(0,nmaxvalue);

for(int i = 0; im_progress.setpos(i);

char sznumber[20] = ;

itoa(i, sznumber, 10);

m_number.setwindowtext(sznumber);

注:itoa方法:將整數轉化為字串

第三個引數:表示進製。(上例為十進位制)

滑塊控制項:

與進度條控制項使用類似:

setrange設定範圍

setpos設定進度

getpos獲得當前進度

使用示例:

關聯變數:cstatic  m_area;

文字框控制項關聯變數:

uint  m_nrvalue;

uint  m_ngvalue;

uint  m_nbvalue;

進度條控制項關聯變數:

csliderctrl  m_rslider;

csliderctrl  m_gslider;

csliderctrl  m_bslider;

1、為對話方塊類新增成員變數:colorref  m_ccolor;

2、對話方塊初始化時:

m_rslider.setrange(0,255);

m_gslider.setrange(0,255);

m_bslider.setrange(0,255);

m_ccolor = rgb(0,0,0);

3、為對話方塊類新增wm_hscroll訊息響應函式,進度條滑動時就會響應。

(若是豎直進度條,則新增wm_vscroll響應函式)

void cpickcolordlg::onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar)

if (nsbcode == sb_thumbtrack)

if (pscrollbar->m_hwnd == m_rslider.m_hwnd)

m_nrvalue = npos;

updatedata(false);

if (pscrollbar->m_hwnd == m_gslider.m_hwnd)

m_ngvalue = npos;

updatedata(false);

if (pscrollbar->m_hwnd == m_bslider.m_hwnd)

m_nbvalue = npos;

updatedata(false);

m_clcolor = rgb(m_nrvalue, m_ngvalue, m_nbvalue);

updatearea();

cdialog::onhscroll(nsbcode, npos, pscrollbar);

4、上面提到的updatearea()函式,用於更新控制項區域的顏色顯示

需要在對話方塊類中新增成員函式:

public: void updatearea()

**如下:

void cpickcolordlg::updatearea()

cdc* pdc = m_area.getdc();

crect clientrc;

m_area.getclientrect(clientrc);

pdc->fillrect(clientrc,&cbrush(m_ccolor));

m_area.releasedc(pdc);

5、onpaint()中也要新增updatearea();

6、為文字框控制項新增en_change訊息響應函式。(當更改文字框內容時,滑塊和picture控制項要做出相應響應)

**如下:

void cpickcolordlg::onchangebvalue()

updatedata(true);

m_bslider.setpos(m_nbvalue);

updatearea();

void cpickcolordlg::onchangervalue()

updatedata(true);

m_rslider.setpos(m_nrvalue);

updatearea();

void cpickcolordlg::onchangegvalue()

updatedata(true);

m_gslider.setpos(m_ngvalue);

updatearea();

MFC控制項(三)(進度條控制項和滑塊控制項)

進度條控制項 使用進度條顯示操作進度 進度條控制項封裝在cprogressctrl類中。1 setrange和setrange32方法用來設定進度條顯示範圍。語法格式 void setrange short nlower,short nupper void setrange32 int nlower...

MFC控制項之進度條

這個是手工活,不多說。vs2008和vs2005可能沒有這個函式,需要手動新增,如果你不會新增,看看這裡吧。一般初始化就是設定控制項的範圍之類的。bool progressys oninitdialog void 例如本例是在按鈕新增的響應 void progressys onbnclickedbu...

進度條控制項

base.dispose disposing region windows 窗體設計器生成的 設計器支援所需的方法 不要 使用 編輯器修改此方法的內容。private void initializecomponent this.progressbar1 new system.windows.form...