MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

效果展示-------

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

(由于gif的录制问题,进度显示不连贯,实际上效果很不错的)

程序实例-------

1、打开Visual Studio(此文以VS2010做例子),新建一个基于对话框的MFC程序,命名为Progress。

2、向对话框中拖入一个Progress控件、一个Check Box,调整好控件和对话框的大小。

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

3、设置ID:进度条IDC_PROGRESS、复选框IDC_CHECK,注意大小写

4、更改进度条的属性:Marquee为True。

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

5、为进度条添加CProgressCtrl变量:m_progress

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

6、在CProressDlg的OnInitDialog函数中添加代码:

m_progress.SetMarquee(TRUE,30); //设置进度条的进度段长度
((CButton*)GetDlgItem(IDC_CHECK))->SetCheck(1); //默认复选框为选中状态

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

7、为复选框添加按下处理程序OnBnClickedCheck,函数代码如下:

void CProgressDlg::OnBnClickedCheck()
{
	// TODO: 在此添加控件通知处理程序代码
	BOOL bChecked = ((CButton*)GetDlgItem(IDC_CHECK))->GetCheck(); //把复选框选中状态传递给bChecked
	if(bChecked) //如果复选框被选中
		m_progress.ModifyStyle(NULL,WS_VISIBLE); //使进度条可见
	else //如果复选框没有被选中
		m_progress.ModifyStyle(WS_VISIBLE,NULL); //使进度条不可见

	Invalidate(); //重绘窗口
}

 

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

8、现在可以生成应用程序了。

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

9、启动调试,就可以看到效果。默认进度条显示,复选框选中,取消复选框选择即可隐藏进度条;再次选中即可出现进度条。

MFC基于对话框编程实例:使用“未定义进度”的进度条(有一节小进度在进度条中滚动)

工程文件及源代码下载:https://download.csdn.net/download/baidu_38494049/10700023