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

进度条的使用 Progress控件的更多相关文章

  1. C# 通过委托控制进度条以及多线程更新控件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. 用VS2017进行移动开发(C#、VB.NET)——Progress控件,Smobiler移动开发

    Progress控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个Progress控件到窗体界面上 修改Pr ...

  3. Android 自己定义圆圈进度并显示百分比例控件(纯代码实现)

    首先,感谢公司能给我闲暇的时间,来稳固我的技术,让我不断的去探索研究,在此不胜感激. 先不说实现功能,上图看看效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  4. WP8滑动条(Slider)控件的使用

    1. <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinit ...

  5. 使用 new XMLHttpRequest() 制作下载文件进度条

    mui 进度控件使用方法: 检查当前容器(container控件)自身是否包含.mui-progressbar类: 当前容器包含.mui-progressbar类,则以当前容器为目标控件,直接显示进度 ...

  6. 使用C#开发ActiveX控件(新)

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

  7. iOS企业级开发初级课程-UIView与控件(20集)

    UIView与控件向大家介绍了视图和控件之间的关系以及应用画面的建构层次.然后是对标签.按钮.文本框.文本视图.开关.滑块.分段控件.网页控件.屏幕滚动控件.等待控件.进度条.警告.动作选单.工具栏. ...

  8. BackgroundWorker控件

    在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示 ...

  9. 使用C#开发ActiveX控件(新) 转 http://www.cnblogs.com/yilin/p/csharp-activex.html

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

随机推荐

  1. Java实现 LeetCode 387 字符串中的第一个唯一字符

    387. 字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = ...

  2. 一张图说清楚Flink水印和Lateness

    真传一句话,假言万卷书. Flink使用窗口与水印处理乱序问题,使用Latenss处理延迟问题,二者混合使用可以满足很多复杂场景的需求 当Watermark大于窗口结束时间时,会触发窗口内的元素进行计 ...

  3. Fiddler13模拟弱网络环境测试

    前言现在的Android软件,基本上都会有网络请求,有些APP需要频繁的传输数据时对于网络请求的稳定性和在特殊网络条件下的兼容性有要求,但是我们在测试的时候又很难模拟那种弱网络差网络的情况,今天就给大 ...

  4. 调优 | Apache Hudi应用调优指南

    通过Spark作业将数据写入Hudi时,Spark应用的调优技巧也适用于此.如果要提高性能或可靠性,请牢记以下几点. 输入并行性:Hudi对输入进行分区默认并发度为1500,以确保每个Spark分区都 ...

  5. 曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位?

    如何计算,一对key/value应该放在哪个哈希桶 大家都知道,hashmap底层是数组+链表(不讨论红黑树的情况),其中,这个数组,我们一般叫做哈希桶,大家如果去看jdk的源码,会发现里面有一些变量 ...

  6. tensorflow2.0学习笔记第二章第四节

    2.4损失函数损失函数(loss):预测值(y)与已知答案(y_)的差距 nn优化目标:loss最小->-mse -自定义 -ce(cross entropy)均方误差mse:MSE(y_,y) ...

  7. 一文说通Dotnet Core的后台任务

    这是一文说通系列的第二篇,里面有些内容会用到第一篇中间件的部分概念.如果需要,可以参看第一篇:一文说通Dotnet Core的中间件   一.前言 后台任务在一些特殊的应用场合,有相当的需求. 比方, ...

  8. 00-02.kaliLinux-配置SSH服务

    KaliLinux的SSH服务默认是需要手动配置好后才能使用,否则通过xShell等工具是无法连接上的. 修改SSH服务的配置文件 root@kali:~# cd /etc/ssh root@kali ...

  9. 超强教程!在树莓派上构建多节点K8S集群!

    在很长一段时间里,我对于在树莓派上搭建Kubernetes集群极为感兴趣.在网络上找到一些教程并且跟着实操,我已经能够将Kubernetes安装在树莓派上,并在三个Pi集群中工作.然而,在master ...

  10. JDK Base64编解码1.7和1.8的坑

    场景 对接一个第三方api接口,其中签名部分用的是JDK8的编码.我们线上采用JDK7,导致项目无法编译 替换编解码部分为1.7的代码,然后签名又不对 所以坑就在这里,结论,1.7的编解码有换行符导致 ...