MFC控件 — 进度条【案例】「建议收藏」

MFC控件 — 进度条【案例】「建议收藏」打开游戏或者其他一些软件时,时常会看到刚开始时有一个进度条在加载,有点酷炫的感觉。对于MFC进度条的使用,下面用一个案例介绍一下。案例:进度条单步加载和自动连续加载步骤:1.按下图在对话框中添加一个进度条,一个编辑框,和3个按钮,并为进度条添加一个控件变量进度条变量:m_Progress2.在初始化函数中对进度条进行初始化,代码如下:BOOLCSpinDlg::OnInitDia…

大家好,又见面了,我是你们的朋友全栈君。

打开游戏或者其他一些软件时,时常会看到刚开始时有一个进度条在加载,有点酷炫的感觉。对于MFC进度条的使用,下面用一个案例介绍一下。

案例:进度条单步加载和自动连续加载

步骤:
1.按下图在对话框中添加一个进度条,一个编辑框,和3个按钮,并为进度条添加一个控件变量
在这里插入图片描述
进度条变量:m_Progress
在这里插入图片描述
2.在初始化函数中对进度条进行初始化,代码如下:

BOOL CSpinDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
  //XXXXX
  //默认代码
  //XXXXX
	
	m_Progress.SetRange(0,100);//设置进度条数值变化范围
	m_Progress.SetPos(1);      //设置进度条默认初始进度

	CString str;
	int nPos = m_Progress.GetPos(); // 获取进度条的当前位置
	str.Format("%d",nPos);
	GetDlgItem(IDC_EDIT_Progress)->SetWindowText(str + _T("%"));//显示进度条初始进度

	return TRUE;  // return TRUE  unless you set the focus to a control
}

运行,此时进度条位置在1%的位置上:
在这里插入图片描述

3.为3个按钮分别添加点击事件:

单步加载 按钮:

//单步控制进度条
void CSpinDlg::OnBtnSingleGo() 
{
	m_Progress.SetStep (5); //设置进度条步长
	m_Progress.StepIt();    //按照当前步长更新位置
	
	int nPos = m_Progress.GetPos();// 获取进度条的当前位置
	CString str;
	str.Format("%d",nPos);
	GetDlgItem(IDC_EDIT_Progress)->SetWindowText(str + _T("%"));//显示进度条进度
	
}

自动加载 按钮:

//定时器:控制进度条自动加载
void CSpinDlg::OnBtnGo() 
{
	SetTimer(1,500,NULL); //开启自动加载

}

//定时器内部具体实现进度条的加载

void CSpinDlg::OnTimer(UINT nIDEvent) 
{
	
	m_Progress.SetStep (5);//步长
	m_Progress.StepIt();//按步长更新位置
	int nPos = m_Progress.GetPos();// 获取进度条当前位置
	
	CString str;
	str.Format("%d",nPos);
	GetDlgItem(IDC_EDIT_Progress)->SetWindowText(str + _T("%"));//显示进度条进度
	
	CDialog::OnTimer(nIDEvent);
}

停止加载 按钮:

//关闭定时器,停止进度条的加载
void CSpinDlg::OnBtnStop() 
{
	KillTimer(1);
}

运行起来,点击单步加载,进度条将按照每步为5的长度进行加载
点击自动加载,进度条将按照每步为5的长度进行自动连续加载,直到按下停止加载按钮才会停止加载。

在这里插入图片描述

结语:谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160338.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Maven–如何下载JSONObject相关依赖架包

    Maven–如何下载JSONObject相关依赖架包一、开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式。com.alibaba.fastjson.JSONObject(依赖1个架包fastjson-1.2.28.jar)net.sf.json.JSONObject(依赖6个架包commons-beanutils-1.9.3.jar、commons-c…

    2022年7月12日
    66
  • 纸上得来终觉浅,绝知此事要躬行

    纸上得来终觉浅,绝知此事要躬行

    2021年10月2日
    49
  • GridBagConstraints布局[通俗易懂]

    GridBagConstraints布局[通俗易懂]查看API文档,我们就知道GridBagConstraints有十一个属性!自我感觉API文档里面有些东西讲得不是很好理解,就象gridx与gridy这两个属性一样,有些书上说gridx表示行,gridy表示列!API文档里面更是讲了一大堆。    现在,提供本人对这些属性的理解:  1,  gridx:表示组件的左边缘与网格左部之间的距离,如果学过HTML的话,那么gridx

    2025年10月15日
    3
  • vue(20)生命周期函数「建议收藏」

    vue(20)生命周期函数「建议收藏」生命周期函数生命周期函数代表的是Vue实例,或者是Vue组件,在网页中各个生命阶段所执行的函数。生命周期函数可以分为创建阶段和运行期间以及销毁期间。其中创建期间的函数有beforeCreate、c

    2022年8月7日
    7
  • WordPress使用淘宝IP地址库的API显示评论者的位置信息(二)

    WordPress使用淘宝IP地址库的API显示评论者的位置信息(二)

    2021年11月5日
    55
  • Android开发前景(海洋药物开发前景)

    一、Android的产生过程和发展1.概念:Android是一种基于Linux的自由及开放源代码的操作系统,现在的主要适用范围一般是为移动端设备,如一类安卓手机和平板电脑。最初的安卓系统由Google公司和开放手机联盟领导及开发,2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。第一部Android智能手机发布于2008年10月,随后安卓系统也由手机平台逐渐像像平板电脑以及其他领域扩展。2011年第一季度,Android在全球的市

    2022年4月14日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号