进度条的使用 Progress控件
BOOL CEx040105eDlg::OnInitDialog() {
m_progress.SetRange( 0 ,100 );//设置进度的下限和上限,默认值是0和100。
m_progress.SetStep(5);//设置StepIt一次移动多少进度,默认值是10。 m_progress.SetPos(0);//设置进度条的初始进度。
m_progress.SetPos(0); //设置当前进度条位置;
}
实现函数:
void SndMESSge()
{
for( int i = 0; i <100/5; i ++)
{
Sleep( 100 );
m_progress.StepIt();//初始化时设置了每次移动5度,总共移动100/5 次;
}
(以下蓝色字体为手动添加的代码)
(1) 创建一个基于对话框的应用程序。
(2) 在对话框界面添加一个文本框、一个进度条控件(Progress控件)和一个按钮。
(3) 为Progress控件添加一个变量m_ctrlProgress,文本框添加一个变量m_strText。
(4) 在初始化函数中添加如下代码
BOOL CBbbDlg::OnInitDialog()
{
CDialog::OnInitDialog();
…………
// TODO: Add extra initialization here
SetDlgItemText(IDC_EDIT1,_T("0%"));
//设置进度条的范围
m_ctrlProgress.SetRange(0,100);
//设置进度条的每一步的增量
m_ctrlProgress.SetStep(10);
//设置进度条的当前位置
m_ctrlProgress.SetPos(0);
return TRUE; // return TRUE unless you set the focus to a control
}
(5) 双击按钮,添加如下代码:
void CBbbDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(false);
//获取进度条的位置范围的最大值和最小值
int nLower=0;
int nUpper=0;
m_ctrlProgress.GetRange(nLower,nUpper);
if(m_ctrlProgress.GetPos()==nUpper){
m_ctrlProgress.SetPos(nLower);
}
//用每一步的增量来增加进度条的当前位置
m_ctrlProgress.StepIt();
//获取进度条的当前位置
int nPos=(m_ctrlProgress.GetPos()-nLower)*100/(nUpper-nLower);
CString s;
s.Format("%d",nPos);
m_strText=s+"%";
UpdateData(false);
}
运行结果:
(单击测试按钮进度条位置前进一步,要实现自动前进,需要设置定时器,本文暂时不介绍定时器的运用)
int n =(int)wParam;
int ncout = ( int )m_arraySendinfo.GetCount();
if ( m_bInitProgess == FALSE )
{
m_bInitProgess = TRUE;
m_Progreess.SetRange(0, ncout );//设置范围
m_Progreess.SetPos(0);//设置位置
m_Progreess.ShowWindow( SW_SHOW );
}
int nPos = 0;
int nPOS = m_Progreess.SetPos( ++nPos );
m_Progreess.SetPos( nPOS );
m_Progreess.SetStep( nPos );
m_Progreess.StepIt();
return 0;
}
int n =(int)wParam;
int ncout = ( int )m_arraySendinfo.GetCount();
m_Progreess.SetRange(0, ncout );//设置范围
m_Progreess.SetPos(0);//设置位置
for(int i = 0 ; i <ncout ; i ++ )
{
int nPos = 0;
int nPOS = m_Progreess.SetPos( ++nPos );
m_Progreess.SetPos( nPOS );
m_Progreess.SetStep( nPos );
m_Progreess.StepIt();
return 0;
}
参考文献:曲扬,Visual C++实效编程280例,人民邮电出版社,2009.3