【问题标题】:WinAPI progress bar: stop animation?WinAPI 进度条:停止动画?
【发布时间】:2013-07-02 09:19:17
【问题描述】:

是否可以停止/抑制进度条的“脉冲”动画? (这是在 vista 主题 IIRC 中引入的)

我们有一个可由用户暂停的进程(以检查硬件或中间结果)。虽然有通常的“按下暂停按钮”反馈来传达状态,但进度条动画使它看起来像是进程仍在运行。

(简单的方法 - 隐藏进度条 - 不是最理想的,因为即使在暂停状态下,进度也有些相关。)

【问题讨论】:

    标签: winapi progress-bar windows-themes


    【解决方案1】:

    由于您使用的是 Vista 版本的通用控件库中引入的进度条,因此您可以做得比简单地抑制动画效果更好。

    进度条有三种状态:

    • 正常
    • 暂停
    • 错误

    您可以通过向进度条控制窗口发送PBM_SETSTATE message 在状态之间进行切换。 wParam 参数应为 PBST_NORMALPBST_PAUSEDPBST_ERRORlParam 参数应为 0。

    对于暂停和错误状态,都会抑制脉冲动画。

    要检索进度条的当前状态,请发送PBM_GETSTATE message

    【讨论】:

      【解决方案2】:

      问题不是很清楚,但听起来您以选取框模式显示进度条。 “我没死,不知道要花多长时间,但正在努力”模式。通过打开 PBS_MARQUEE 样式标志启用。

      您可以使用PBM_SETMARQUEE message 控制动画。允许您完全关闭它或通过显着增加动画时间使其开始爬行。可能有点适合“暂停”模式。默认值为 30 毫秒,在 1000 毫秒时它看起来很诡异。完全冻结它不是一个选项,但没有用户会盯着它看 INT_MAX 毫秒。

      【讨论】:

      • 我已经更新了这个问题 - 我的意思是即使 prgoress 栏“卡住”,你也有“脉冲”动画。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多