VS2010 使用进度条控件的问题,进度条步进的时候任意操作都可能导致程序崩溃
我使用的是 VS2010,工程中需要使用进度条来显示某项工作的进度。
我添加进度条的方式是在工具箱中选择 "Progress Control",然后放在对话框的某个位置。代码中是用建立新线程的方式来显示进度条状态。用这样的方式 CProgressCtrl m_MainProgressCtl 来调用进度条。
然后在程序运行的时候,到进度条显示的地方,进度条会随机死掉(主代码还在运行),等工作代码执行完毕以后,冻僵的进度条界面正常消失,退回主对话框。有时候甚至会导致整个程序出错死掉。
调试了很多次,但是只要使用了进度条,不管是新建线程,或者就是在主界面直接调用,进度条的界面都会随机冻结,甚至危及主程序。
后来我就做了这个进度条的实验。新建一个 VS2010 的对话框工程,什么也不干,就在界面上放一个进度条控件,然后再放一个按钮来执行驱动进度条的动作
CProgressCtrl m_MainProgressCtl;
....
m_MainProgressCtl.SetRange(0,10000);
....
void CProgressDlg::OnBnClickedMainbutton() //按钮的动作
{
int i = 0;
for(i=0;i<10000;i++)
{
m_MainProgressCtl.SetPos(i);
Sleep(10);
}
}
执行过程中,只要不做任何操作,进度条都能走到底。但是,只要做了其他的操作,比如在对话框随便一个地方点一下,或者在对话框外随便什么地方点一下,对话框就会闪一下,然后鼠标变成忙碌状态(在对话框范围内),进度条也不走了。再次点一下对话框,就出现“程序未响应”的标准 WINDOWS 程序错误界面。
这到底是怎么回事?啥都不干,只用一个进度条控件都会出错?使用这个控件还有什么特殊的要求吗?
实在是郁闷,是不是还有别的实现进度条的方式啊?