使用MFC的应用程序,如果某个按钮的处理函数一直在执行循环做某一个任务,那还能响应其它的消息吗?
RT。就比如说某一个消息对应的处理函数一直在执行WHILE循环,然后我希望关闭程序或按其它按钮执行其它功能那产生的消息还能被应用程序响应吗?据说是由APP下的RUN()函...
RT。就比如说某一个消息对应的处理函数一直在执行WHILE循环,然后我希望关闭程序或按其它按钮执行其它功能那产生的消息还能被应用程序响应吗?
据说是由APP下的RUN()函数维持消息循环的,如果处理函数不结束函数不就没法返回了吗,那是不是就没法回到RUN()进行消息循环来响应其它消息了? 假如能响应其它消息又是如何实现的? 展开
据说是由APP下的RUN()函数维持消息循环的,如果处理函数不结束函数不就没法返回了吗,那是不是就没法回到RUN()进行消息循环来响应其它消息了? 假如能响应其它消息又是如何实现的? 展开
4个回答
展开全部
如果的确是在执行while循环的话,确实不能再被响应了。函数不结束也的确无法返回。
要响应其他消息的话也做不到。
但是很多情况下如果有需要大量处理的数据要使用WHILE循环的话,完全可以另开一个线程去处理。没有必要堵塞主线程。 而且很多WHILE是可以被避免的,具体还是要看你实际应用。
要响应其他消息的话也做不到。
但是很多情况下如果有需要大量处理的数据要使用WHILE循环的话,完全可以另开一个线程去处理。没有必要堵塞主线程。 而且很多WHILE是可以被避免的,具体还是要看你实际应用。
追问
我是要做一个监控和控制电机的软件,要不停的读传感器数据计算后立刻输出控制信号,这么做可能只能用WHILE吧。。另开一线程麻烦吗,我不太懂这个,我翻了基本书也没找着啊,有没有简单快速介绍这个怎么用的书? 是不是用一个什么afxbeginthread命令什么的。。?
追答
是啊。这种情况下没有办法,只能另开线程。用AfxBeginThread或者CreateThread.
展开全部
用线程来做WHILE,就能响应其他消息了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哈,MFC都忘光了。现在更多的偏向于.net和WPF。
但是按照目前的设计思路而言,这样的WHILE循环处理消息应该单独开一个线程进行监听。这样不会影响主线程和其他线程。监听线程接受到了消息后,MFC应该是使用函数指针来进行回调,这个有些记不住了,拿不准。
此外,如果将消息监听线程设置为前台线程,那么即使程序关闭(主线程关闭)那么这个线程仍然存在,同样程序的进程也存在,除非程序中做了处理(超时或者接受到了消息后的后续处理)或者直接结束进程(任务管理器kill进程)。如果设置为后台线程,那么只要主线程关闭,监听线程也自动关闭。
但是按照目前的设计思路而言,这样的WHILE循环处理消息应该单独开一个线程进行监听。这样不会影响主线程和其他线程。监听线程接受到了消息后,MFC应该是使用函数指针来进行回调,这个有些记不住了,拿不准。
此外,如果将消息监听线程设置为前台线程,那么即使程序关闭(主线程关闭)那么这个线程仍然存在,同样程序的进程也存在,除非程序中做了处理(超时或者接受到了消息后的后续处理)或者直接结束进程(任务管理器kill进程)。如果设置为后台线程,那么只要主线程关闭,监听线程也自动关闭。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好!生活总是惊人地相似。我也想用MFC编写电机的控制软件,通过不断检测编码器位置来控制电机运行。也遇到循环卡死的问题。想问您最后是怎么解决的?是开辟了新线程吗?万分感谢!!!诚盼回复
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询