使用进度条产生异常 int low=0,up=10;pDlg->m_Ctrl.SetRange(l,up);//此处有时产生异常,但有时却正常,找不到原因,郁闷! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 更详细代码如下:...CPgrsDlg progressDlg;CWinThread* pThread=AfxBeginThread(fnDoCopy,&progressDlg);progressDlg.DoModal();...UINT fnDoCopy(LPVOID lParam){ for(int i=0;i<1000000;i++);//延时,等待dialog显示。(很笨的方法,不知还有好办法么?) int low=0,up=nCount;//nCount 保证>1 CPgrsDlg * pDlg = (CPgrsDlg*)lParam; pDlg->m_Ctrl.SetRange(low,up);...} 你的程序用for(int i=0;i<1000000;i++);延时等待很不精确有可能就会发生对话框中的m_Ctrl还未创建完毕你在线程中就已经使用了他的SetRange方法为什么不在CPgrsDlg类中开启线程函数呢?在CPgrsDlg的initdialog中开启线程就不会出现这种情况了 这样等待是不可以的, 它占用全部CPU, DLG很难出来。简单的改为Sleep(1000); 等待1秒会好得多。关键在于你可以先出DLG, 再起线程。把启动线程的代码移到DLG中的OnInitDialog()中吧。 HTTP/1.1 403 Forbidden 请教一个对话框上的编辑框控件焦点问题 程序运行报错!求各位高手指点! 初学VC,一大堆问题,请老大门帮帮偶啊!! 一个很简单的时间问题求帮助。在线等待 求助 一个单文档视图窗口中如何打开两幅图片?? 怎样改变formview的背景色 没声音 请问高手:怎么将CMemFile中的内容写到磁盘中去? 初学者问!如何用VC开发数据库程序?介绍些入门的例子(告诉如何一步一步做的)! 100分求细化算法源码。
...
CPgrsDlg progressDlg;
CWinThread* pThread=AfxBeginThread(fnDoCopy,&progressDlg);
progressDlg.DoModal();
...
UINT fnDoCopy(LPVOID lParam)
{
for(int i=0;i<1000000;i++);//延时,等待dialog显示。(很笨的方法,不知还有好办法么?)
int low=0,up=nCount;//nCount 保证>1
CPgrsDlg * pDlg = (CPgrsDlg*)lParam;
pDlg->m_Ctrl.SetRange(low,up);
...
}
有可能就会发生对话框中的m_Ctrl还未创建完毕你在线程中就已经使用了他的SetRange方法
为什么不在CPgrsDlg类中开启线程函数呢?
在CPgrsDlg的initdialog中开启线程就不会出现这种情况了
简单的改为Sleep(1000); 等待1秒会好得多。关键在于你可以先出DLG, 再起线程。
把启动线程的代码移到DLG中的OnInitDialog()中吧。