mfc 进度条

请问进度条为什么在最外面加了个循环之后就不走了?是进度条不能重复加载吗?下面是能加载一次的代码:

m_progress.SetRange(0, 100);

m_progress.SetPos(0);
m_progress.Invalidate();

int i = 1;
for (; i <= 100; i++)
{
m_progress.SetPos(i);
}
该怎么实现进度条多次重新加载?
...全文
779 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2019-06-06
  • 打赏
  • 举报
回复
把你的m_progress.SetPos()操作放到OnTimer()中。
  • 打赏
  • 举报
回复
阻塞了。最好是消息里面处理进度。
zgl7903 2019-04-27
  • 打赏
  • 举报
回复
循环的话阻塞了消息环, 可以RedrawWindow强制更新

for(int i=0; i<=100; i++)
{
  pCtrl->SetPos(i);
  pCtrl->RedrawWindow();
}
零隐 2019-04-19
  • 打赏
  • 举报
回复
我设置进度条一般都是不需要update的。
只要设置setpos 位置 进度条自己会更新进度。
schlafenhamster 2019-04-09
  • 打赏
  • 举报
回复
加一句
m_progress.SetPos(i); 后读要重绘
m_progress.Invalidate();
m_progress.UpdateWindow();// 在 循环中 没法 更新 界面 !
schlafenhamster 2019-04-09
  • 打赏
  • 举报
回复
m_progress.SetPos(i); 后读要重绘
m_progress.Invalidate();
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
m_progress.Invalidate();
放 for 中


放那个for循环里?最外层我没写的那个循环吗?

m_progress.SetRange(0, 100);

while (1)
{
m_progress.Invalidate();
m_progress.SetPos(0);
int i = 1;
for (; i <= 100; i++)
{
m_progress.SetPos(i);
}

}

不应该是这样吗?为什么进度条不动?
schlafenhamster 2019-04-08
  • 打赏
  • 举报
回复
m_progress.Invalidate();
放 for 中

15,979

社区成员

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

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