[转]VC中进度条实时刷新办法

本文探讨了在处理大型程序时如何正确地使用进度条,避免程序在运行过程中出现假死现象。通过将处理任务分配给独立线程并利用消息传递机制更新UI,可以实现实时进度反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们在处理大程序时,常常需要耗很长时间,为了不让用户错误的认为系统已经死机,我们要给程序添加进度条,但是大家知道如果就直接添加进度条,并在程序里面控制它的进度,往往得到的结果是程序仍然像死机状态,直到处理完毕才显示进度条进度为100%,中间的过程看不到了,那么怎么办呢,是为什么呢?

原因是我们处理大程序和进度条显示是在同一个线程中进行的,这样往往因为处理大程序导致界面无法实时更新。

解决办法就是把处理大程序的这段逻辑让一个单独的线程在处理,并利用postmessage或sendmessage给主界面发送消息,让主界面去更新。

参见:

http://hi.baidu.com/dnboy/blog/item/5433a9f8b690c40cd8f9fd3c.html

其实,为了不让程序逻辑上看起来混乱,另外有一个简单的办法。

在调用进度条刷新之后,调用如下语句:

MSG   message;      
while   (::PeekMessage(&message,   NULL,   0,   0,   PM_REMOVE))  
{  
   ::TranslateMessage(&message);  
   ::DispatchMessage(&message);  
}//来响应windows消息如移动,进度条刷新

 

就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值