做个采集程序,有一个按钮第一次点击是采样,第二次是停止,但是采样过程的时间不确定,除了使用多线程,怎么响应停止按钮?

lyvvv 2010-01-04 11:12:39
做个采集程序,一个按钮第一次点击是采样,第二次是停止,但是采样过程的时间不确定,除了使用多线程,怎么响应停止按钮?
主要的问题是 怎么在采样的While的循环中判断当前是否点击了这个按钮?


先谢谢各位大侠的指点了!
...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
billbaiyuan 2010-01-15
  • 打赏
  • 举报
回复
实在要用单线程,则在循环中时不时Peek/Dispatch一下message。
不过这是显然应该用多线程解决的呀
老吴笔记 2010-01-04
  • 打赏
  • 举报
回复
是在线程中吗?如果是,那么点点击停止时,向线程发送消息就行了
船过水无痕 2010-01-04
  • 打赏
  • 举报
回复
只能采用多线程! 单线程就是做一件事!
lyvvv 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ninetyfive 的回复:]
while循环中,可以设置一个变量,当按钮点击了以后,在相应函数中赋值
while中,判断即可
[/Quote]



在while中,程序就相当于死掉了,点击按钮是无效的,现在的问题是怎么获取当前的鼠标是否点击了这个按钮
不动如岳 2010-01-04
  • 打赏
  • 举报
回复
while循环中,可以设置一个变量,当按钮点击了以后,在相应函数中赋值
while中,判断即可
Ryanwen 2010-01-04
  • 打赏
  • 举报
回复
循环中自己处理消息循环

逻辑上还是使用多线程更清晰
hfcarrey 2010-01-04
  • 打赏
  • 举报
回复
1.不要把工作线程放到UI线程中
2.工作线程
while (WaitForSingleObject(pMainDlg->m_hEvExit, 0) == WAIT_TIMEOUT)
{
... your work
}
3.Stop按钮中
SetEvent(hEvExit)

疯石头 2010-01-04
  • 打赏
  • 举报
回复
单线程在没有执行完代码时时不会响应其他操作的。
  • 打赏
  • 举报
回复
while(g_bRun)
{
}


OnStop()
{
g_bRun = false;
WaitForSingleObject
}
schlafenhamster 2010-01-04
  • 打赏
  • 举报
回复
While的循环中必须有时间响应按钮点击。可以用peekmessge()。

15,466

社区成员

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

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