MFC中如果有死循环如何进行界面刷新

biaozai06 2009-04-03 11:11:14
记得某次面试时被问到如下问题:MFC程序中如果有死循环如何进行界面刷新?

用线程能做到吗?如果不用线程又该如何解决?
...全文
289 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-04-03
  • 打赏
  • 举报
回复
窗口所属线程必须及时处理消息,如果要执行死循环,就在循环中用PeekMessage检查消息,参考3楼代码,如果要完整一些还要在TranslateMessage之前调用TranslateAccelerator、PreTranslateMessage、IsDialogMessage。
oyljerry 2009-04-03
  • 打赏
  • 举报
回复
死循环放线程中,这样UI线程不会阻塞,界面就不会假死了
死循环中可以不断的PostMessage等发送消息给UI线程,来更新界面,如进度条等都是这么个流程
A_KIM 2009-04-03
  • 打赏
  • 举报
回复
LS的比我快那么一点点。。。。。
A_KIM 2009-04-03
  • 打赏
  • 举报
回复
在循环内主动调用GetMessage,然后按照Win32那样,调用API分派消息到WND。
lwx300 2009-04-03
  • 打赏
  • 举报
回复 1
//可以将以下代码放到循环中,就可以处理消息了,但最好还是使用线程:

while (PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
hurryboylqs 2009-04-03
  • 打赏
  • 举报
回复
不能把主界面线程阻死
Chivalry 2009-04-03
  • 打赏
  • 举报
回复
线程

15,980

社区成员

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

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