CProgressCtrl 进度条

 

1.CProgressCtrl类成员   

  CProgressCtrl() 构造一个CProgressCtrl对象

  Create() 创建一个进度条控件并将它与一个CProgressCtrl对象连接

  void SetRange( short nLower, short nUpper );为进度条控件设置范围的最小值和最大值,并重画进度条来反映新的范围,默认为0~100,若设置32位范围,用下面的函数。

        int StepIt( );使进度增加一个步长,步长值是由SetStep函数设置的,缺省的步长值是10.函数返回进度条的前一个进度.

  void GetRange( int& nLower, int& nUpper); 获取进度条控件范围的下限和上限

  int GetPos 获取进度条的当前位置

  int SetPos(int nPos) 设置进度条的当前位置并重画进度条来反映新的位置

  int OffsetPos(int nPos) 用一个指定的增量来增加进度条控件的当前位置,并重画此进度条来反映新的位置

  int SetStep( int nStep )为一个进度条控件指定每一步的增量,返回原来步长。

 

2、进度条控制的类属性

  进度条控制的类属性包括设置进度条最大最小控制范围SetRange、设置进度条当前位置 SetPos、设置进度条当前位置偏移值OffsetPos和设置进度条控制增量值SetStep。

3、进度条控制的操作方法

  进度条控制的操作方法主要是使进度条控制并重绘进度条的StepIt函数。

  进度条控制的应用技巧示例

  1、利用应用程序向导AppWizard生成基于对象框的应用程序CProgDlg;

  2、在对话框中设置进度条和静态文本控制,其ID分别为IDC_PROG和IDCPERCENT;

  在对话框初始代码中增加控制的范围和位置:

  在ProgDlg.h中设置两个数据成员,用来表示进度条的最大值和步长:

//ProgDlg.h

class CProgDlg:public Cdialog

{ ......//其它代码

public:

int m_nMax,m_nStep;

...... //其它代码

}

  (2)在ProgDlg.cpp中设置初始状态

BOOL CProgDlg::OnInitDialog()

{ Cdialog::OnInitDialog();

......//其它代码

//TODO:Add extra initialization here

CProgressCtrl *pProgCtrl=(CProgressCtrl*)GetDlgItem(IDC_PROG);

pProgCtrl->SetRange(0,200);//设置进度条范围

......//其它代码

m_nMax=200;

m_nStep=10;

SetTimer(1,1000,NULL);//设置进度条更新时钟

return TRUE;

}

  (3)完善WM_TIMER消息处理,使进度条按照当前步长进行更新,同时完成进度条的百分比显示:

void CProgDlg::OnTimer(UINT nIDEvent)

{ //TODO:Add your message handler?

CProgressCtrl *pProgCtrl=(CProgressCtrl*)GetDlgItem(IDC_PROG);

int nPrePos=pProgCtrl->StepIt();//取得更新前位置

char test[10];

int nPercent=(int)(((nPrePos+m_nStep)/m_nMax*100+0.5);

wsprintf(test,?%d%%?,nPercent);

GetDlgItem(IDC_PERCENT)->SetWindowText(text);

Cdialog::OnTimer(nIDEvent);

}

你可能感兴趣的:(MFC)