前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC控件 — 进度条【案例】「建议收藏」

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

作者头像
全栈程序员站长
发布2022-09-13 11:00:10
1.5K0
发布2022-09-13 11:00:10
举报
文章被收录于专栏:全栈程序员必看

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

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

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

步骤: 1.按下图在对话框中添加一个进度条,一个编辑框,和3个按钮,并为进度条添加一个控件变量

在这里插入图片描述
在这里插入图片描述

进度条变量:m_Progress

在这里插入图片描述
在这里插入图片描述

2.在初始化函数中对进度条进行初始化,代码如下:

代码语言:javascript
复制
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个按钮分别添加点击事件:

单步加载 按钮:

代码语言:javascript
复制
//单步控制进度条
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("%"));//显示进度条进度
	
}

自动加载 按钮:

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

}

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

代码语言:javascript
复制
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);
}

停止加载 按钮:

代码语言:javascript
复制
//关闭定时器,停止进度条的加载
void CSpinDlg::OnBtnStop() 
{
	KillTimer(1);
}

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

在这里插入图片描述
在这里插入图片描述
结语:谢谢!

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

=

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 案例:进度条单步加载和自动连续加载
  • 结语:谢谢!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档