MFC编程实例二:进度条的使用

2011-03-22 09:09:09|  分类: C++(C语言) |  标签:进度  nlower  nupper  添加  mfc  |字号 订阅

 
 本人用的可以的
 
 

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);

}

运行结果:

(单击测试按钮进度条位置前进一步,要实现自动前进,需要设置定时器,本文暂时不介绍定时器的运用)

 
 我自己做的
for{

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

最新文章

  1. 远程桌面时plsql的复制粘贴功能失效
  2. 查询SqlServer中每张表的记录数
  3. Win10 IoT C#开发 4 - UART 串口通信
  4. linux小程序--cmatrix
  5. eclipse连接外部tomcat进行debug
  6. clientHeight,offsetHeight与scrollHeight的相关知识
  7. 资源监控工具Spotlight-使用说明
  8. json,serialize,msgpack比较
  9. kbengine mmo源码(完整服务端源码+资源+完整客户端源码)
  10. 使用VBA实现Excel自杀功能
  11. ipc.Client: Retrying connect to server: h1/192.168.1.61:9000. Already tried 0 time(s);解决方法
  12. C++的函数重载 转
  13. SQL Server 向堆表中插入数据的过程
  14. VS2013编译FileZilla0.9.44
  15. CentOS7 更换yum源
  16. nginx解决方案
  17. 201521123117 《Java程序设计》第1周学习总结
  18. CSS系列------选择器和选择器的优先级
  19. Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
  20. System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”

热门文章

  1. 容器技术之Dockerfile(二)
  2. Java实现 LeetCode 576 出界的路径数(DFS || DP)
  3. Java实现 LeetCode 26 删除排序数组中的重复项
  4. Java实现 LeetCode 12 整数转罗马数字
  5. java实现BellmanFord算法
  6. TZOJ Find the Spy
  7. sql server 连接种类
  8. 源码分析 | 手写mybait-spring核心功能(干货好文一次学会工厂bean、类代理、bean注册的使用)
  9. 停电后,在UPS电源下服务器自动关机脚本
  10. 数据库连接池 Druid和C3p0