相关疑难解决方法(0)

Windows 7 Aero Theme Progress Bar Bug?

我遇到了我认为是Windows 7上的进度条错误.为了演示该错误,我创建了一个带有按钮和进度条的WinForm应用程序.在按钮的'on-click'句柄中,我有以下代码.

private void buttonGo_Click(object sender, EventArgs e)
{
  this.progressBar.Minimum = 0;
  this.progressBar.Maximum = 100;

  this.buttonGo.Text = "Busy";
  this.buttonGo.Update();

  for (int i = 0; i <= 100; ++i)
  {
    this.progressBar.Value = i;
    this.Update();

    System.Threading.Thread.Sleep(10);
  }

  this.buttonGo.Text = "Ready";
}
Run Code Online (Sandbox Code Playgroud)

预期的行为是进度条前进到100%,然后按钮文本更改为"就绪".但是,在Windows 7上开发此代码时,我注意到进度条将上升到大约75%,然后按钮文本将变为"就绪".假设代码是同步的,这不应该发生!

在进一步测试中,我发现在Windows Server 2003上运行的完全相同的代码产生了预期的结果.此外,在Windows 7上选择非空气动力学主题会产生预期的结果.

在我看来,这似乎是一个错误.当长操作涉及复杂的代码时,通常很难使进度条准确,但在我的特定情况下它非常直接,所以当我发现进度控制没有准确地表示进度时我感到很失望.

有没有人注意到这种行为?有人找到了解决方法吗?

aero windows-7 progress-bar

10
推荐指数
3
解决办法
4942
查看次数

使用PBM_SETPOS设置位置时,ProgressBar滞后

我有一个简单的C++/MFC对话框,其中包含进度条控件.我用PBM_SETPOS消息或MFC 设置它的位置:

//CProgressCtrl myCtrl;
myCtrl.SetPos(position);
Run Code Online (Sandbox Code Playgroud)

它工作正常,除非我需要这个位置快速增长,它似乎落后了.

有没有办法消除这种滞后?

PS.我在旧版本的Windows上尝试了我的应用程序(具有经典的视觉样式),并且在那里不存在这种滞后.

c++ windows user-interface winapi mfc

5
推荐指数
1
解决办法
2185
查看次数

标签 统计

aero ×1

c++ ×1

mfc ×1

progress-bar ×1

user-interface ×1

winapi ×1

windows ×1

windows-7 ×1