社区
界面
帖子详情
MFC中如果有死循环如何进行界面刷新
biaozai06
2009-04-03 11:11:14
记得某次面试时被问到如下问题:MFC程序中如果有死循环如何进行界面刷新?
用线程能做到吗?如果不用线程又该如何解决?
...全文
289
7
打赏
收藏
MFC中如果有死循环如何进行界面刷新
记得某次面试时被问到如下问题:MFC程序中如果有死循环如何进行界面刷新? 用线程能做到吗?如果不用线程又该如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
线程
MFC
中
窗口
刷新
函数详解
MFC
中
窗口
刷新
函数详解
MFC
在阻塞运行的函数
中
实现动态
刷新
界面
,解决
界面
假死的问题
在一些密集计算的函数
中
MFC
刷新
界面
按引:Invalidate在消息队列
中
加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围就是消息队列
中
WM_PAINT消息(最多只有一条)的无效区。效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用UpdateWindow会使WM_PAINT消息马上执行的,绕过了消...
MFC
界面
卡死到底为何
现象:程序运行一段时间后,
界面
卡死 程序开启了一个监听线程: //创建接收信号线程 Thread = AfxBeginThread(GetIOMsgThread, this, THREAD_PRIORITY_NORMAL, 0, 0, NULL); int CFEECARD_MULT...
用
MFC
进行
TCP文件传输遇到的问题
MFC
中
不可以在Dialog代码
中
使用
死循环
在
MFC
Dialog
中
使用
死循环
会导致
界面
假死,
MFC
Diaglog
界面
的显示本来就是依靠一个线程来完成的,到使用
死循环
时这个线程就会一直卡在这,导致
界面
无法
刷新
,造成
界面
的假死。 解决方法:新开一个线程,在线程
中
处理
死循环
的问题。 新开线程的基本格式: (1)声明线程函数:DWORD WINAPI recvFun(LPVOID lpPara...
界面
15,980
社区成员
115,900
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章