新手请教一个MFC的设计思路

不会再变le 2012-09-19 04:58:22
MFC是对话框形式的

里面有三个按钮,分别编号为1,2,3

按下1后,1运行到一半要等待按钮2按下并执行完按钮2的事件后才能继续执行按钮1的事件,然后按钮2事件里面要等待按钮3被按下并执行完毕后才能继续执行按钮2的事件。

这个过程中程序不能被卡死,不知道该怎么做了,我尝试过用定时器,不行



...全文
291 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
你妹的特盗不 2012-09-21
  • 打赏
  • 举报
回复
放到线程中,
按钮1的事,
先做的,在线程上半部份。
然后设定一个事件,等待按钮2按下,然后执行一些CODE后,设事件,等按钮3按下,3完成后,释放3的事件,然后接着执行按钮2的事,完了,释放2的事件,接着RUN1的事,当然一个按钮,一个线程了。
不会再变le 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

非常简单
建立2个CEvent或者CMutex

event2和event3
然后
按钮1
处理之前任务,然后
WaitSingleObject(event2,infinite)

按钮2
处理之前任务,然后
WaitSingleObject(event3,infinite)
SetEvent(event2);

按钮1
SetEvent(event3);

解……
[/Quote]
谢谢啦,这应该能解决我的问题了,还有一个小点,如果我把这些代码放在线程里面然后直接强制终止的话,不需要我对事件做什么吧?线程里面我绝对不放任何new和malloc的,是不是线程强制终止了,那些等待事件也就没了?
w051108 2012-09-19
  • 打赏
  • 举报
回复
6楼的+1
傻X 2012-09-19
  • 打赏
  • 举报
回复
按钮3
SetEvent(event3);

打字错误
傻X 2012-09-19
  • 打赏
  • 举报
回复
非常简单
建立2个CEvent或者CMutex

event2和event3
然后
按钮1
处理之前任务,然后
WaitSingleObject(event2,infinite)

按钮2
处理之前任务,然后
WaitSingleObject(event3,infinite)
SetEvent(event2);

按钮1
SetEvent(event3);

解决了。
不会再变le 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

不想一下运行完,就用定时器了。
按1,运行一半,判2条件,2到向下运行,不到返回。
3同理
[/Quote]
你返回了就接不到2的信号了,我是想让1等待2,按下2才就继续执行,等的过程中这个对话框MFC不能死掉,可以进行其他操作
  • 打赏
  • 举报
回复
运行放到线程中 用信号进行控制 设置按钮的可用性
qlizhang 2012-09-19
  • 打赏
  • 举报
回复
不想一下运行完,就用定时器了。
按1,运行一半,判2条件,2到向下运行,不到返回。
3同理
不会再变le 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

直接在1中调用2,2中调用3就行了
b1()
{
..
b2();
..
}
b2()
{
..
b3();
..
}
b3()
{
..
}
[/Quote]
不行,你这样一下就全运行完了,需要我按下2才能执行2的,我不按下他就得一直等着
qlizhang 2012-09-19
  • 打赏
  • 举报
回复
直接在1中调用2,2中调用3就行了
b1()
{
..
b2();
..
}
b2()
{
..
b3();
..
}
b3()
{
..
}

15,979

社区成员

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

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