|
VC6在线程中对进度操作为什么会报错?
在界面上放一个按钮,当点击按钮时,读取控件的值,后创建一个线程,并把这些值传到线程中,让线程刷新进度条件,从而解放界面的其它操作。
可是在线程中对进度条件的指针操作时程序直接崩溃了。不知道什么原因,各位帮忙看看是什么问题导致的?
声明:
struct TestThreadInfo
{
CProgressCtrl* pctrlProgress;
UINT BeginValue;
UINT EndValue;
UINT StepValue;
UINT StepTime;
int Ctrl;
};
UINT TestThreadFunc(LPVOID lpParam);
按钮消息处理:
void Test::OnButtonTestStart()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (Teststate[0] = FALSE)
{
TestThreadPara.pctrlProgress = &m_PrintTestProgress;
TestThreadPara.BeginValue = m_EditBeginFocus;
TestThreadPara.EndValue = m_EditEndFocus;
TestThreadPara.StepTime = m_EditPrintTime;
TestThreadPara.StepValue = m_EditFocusD;
TestThreadPara.Ctrl = TRUE;
Teststate[0] = TRUE;
}
else
Teststate[0] = TRUE;
pThread=AfxBeginThread(TestThreadFunc, &TestThreadPara);
}
线程体:
UINT TestThreadFunc(LPVOID lpParam)
{
TestThreadInfo* pInfo=(TestThreadInfo*)lpParam;
for(int i=0;i<100;i++)
{
int nTemp=pInfo->StepTime;
pInfo->pctrlProgress->SetPos(i);
Sleep(nTemp);
}
return 0;
}
程序运行到pInfo->pctrlProgress->SetPos(i);时直接崩溃了。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|