==关于对话框中多线程问题==

sunsfq 2004-05-11 11:12:14
具体要作这样一个东西
对话框中有一个“开始”和“暂停”按钮
点击“开始”时用AfxBeginThread启动一个线程,该线程里要显示一个进度条
点击“暂停”时,可以终止进度条显示

我现在是在新启动的线程中向对话框发送消息,该消息映射函数里面显示进度条
但是此时“暂停”按钮不可点击,这也就失去了用线程的意义
我就想实现新开线程中显示进度条的同时,对话框仍然可以响应其它按钮事件

注:不用定时器
分数不是问题
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunsfq 2004-05-12
  • 打赏
  • 举报
回复
我已经知道怎么回事了,是我逻辑搞错了
发送消息有问题,我是一次发送消息
实际上应该有一个事件源来定期发送消息
依次驱动进度条的显示

谢谢大家了!
lizmei001 2004-05-11
  • 打赏
  • 举报
回复
void CMyDlg::OnStop()
{
m_bLoop = FALSE;
}

dword WINAPI thread(LPVOID lparamt)
{
CMyDlg *dlg = (CMyDlg *)lparamt;
int i = 0;
while(dlg->m_bLoop)
{
dlg->m_Process.SetPos(i ++);
Sleep(0);
}
}
ymbymb 2004-05-11
  • 打赏
  • 举报
回复
或者不用线程:
void CMyDlg::OnStop()
{
m_bCancel = FALSE;
while(!m_bCancel)
{
....
//显示进度条
....
DoEvents();
}
}

void CMyDlg::OnStop()
{
m_bCancel = TRUE;
}

void DoEvents()
{
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return;
}

ymbymb 2004-05-11
  • 打赏
  • 举报
回复
你把程序发过来,帮你看看! golden.yu@126.com

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧