MFC编程实例二:进度条的使用
2011-03-22 09:09:09| 分类: | 标签: |字号
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