MFC做的程序有时出现界面假死情况

卖萌de猫 2013-01-19 03:32:56
我用MFC基于对话框做毕业设计,功能已经实现了,但是在测试时,有时会出现(具体时间不一定,几分钟到几十分钟)界面上的控件不动了,用鼠标在界面上随便点点就会出现局部成了白色(本来是蓝色),但是程序还在运行,只是界面不能用了。程序中用到一个计时器,在OnTimer中画图、更新控件状态。获取DC什么的都在OnTimer外。请大家帮忙分析一下原因在哪。
...全文
613 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖萌de猫 2013-01-19
  • 打赏
  • 举报
回复
确实,我试了,改成500ms,虽然出错时间长了,但是还是会有。
逍遥子_ 2013-01-19
  • 打赏
  • 举报
回复
多线程的东西,其实不复杂,你只要搜一下就可以搜到, 实在不想搜看看下面这个的多线程例子也行: http://blog.csdn.net/hjx_1000/article/details/8476092
Li_Carey 2013-01-19
  • 打赏
  • 举报
回复
最好做成多线程,在同一个线程里做复杂的东西,界面卡死情况不可避免,计时器时间调长也一样,在你“负责歌词”这个过程没有结束前,界面都会卡死,和定时器间隔时间长短没有关系...
卖萌de猫 2013-01-19
  • 打赏
  • 举报
回复
引用 1 楼 hjx_1000 的回复:
看你描述的情况可能是界面没来得及刷新造成的,造成这方面原因,可能是你在程序里面有循环或者其他的等待,影响了界面的刷新;假如你程序里面有循环处理数据之类的,建议将它放在一个新建线程里,不要让主线程做太多的事情。
你说的有道理,我做的是一个音乐播放器,在OnTimer里处理刷新控件(Slider模拟的播放进度,播放时间标签),还有提取歌词。可能负责显示歌词这块比较复杂。如果不用多线程的话,不知道把计时器调长一些会不会解决,计时器用的250ms
逍遥子_ 2013-01-19
  • 打赏
  • 举报
回复
看你描述的情况可能是界面没来得及刷新造成的,造成这方面原因,可能是你在程序里面有循环或者其他的等待,影响了界面的刷新;假如你程序里面有循环处理数据之类的,建议将它放在一个新建线程里,不要让主线程做太多的事情。

15,980

社区成员

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

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