【发布时间】:2013-07-02 09:19:17
【问题描述】:
是否可以停止/抑制进度条的“脉冲”动画? (这是在 vista 主题 IIRC 中引入的)
我们有一个可由用户暂停的进程(以检查硬件或中间结果)。虽然有通常的“按下暂停按钮”反馈来传达状态,但进度条动画使它看起来像是进程仍在运行。
(简单的方法 - 隐藏进度条 - 不是最理想的,因为即使在暂停状态下,进度也有些相关。)
【问题讨论】:
标签: winapi progress-bar windows-themes
是否可以停止/抑制进度条的“脉冲”动画? (这是在 vista 主题 IIRC 中引入的)
我们有一个可由用户暂停的进程(以检查硬件或中间结果)。虽然有通常的“按下暂停按钮”反馈来传达状态,但进度条动画使它看起来像是进程仍在运行。
(简单的方法 - 隐藏进度条 - 不是最理想的,因为即使在暂停状态下,进度也有些相关。)
【问题讨论】:
标签: winapi progress-bar windows-themes
由于您使用的是 Vista 版本的通用控件库中引入的进度条,因此您可以做得比简单地抑制动画效果更好。
进度条有三种状态:
您可以通过向进度条控制窗口发送PBM_SETSTATE message 在状态之间进行切换。 wParam 参数应为 PBST_NORMAL、PBST_PAUSED 或 PBST_ERROR。 lParam 参数应为 0。
对于暂停和错误状态,都会抑制脉冲动画。
要检索进度条的当前状态,请发送PBM_GETSTATE message。
【讨论】:
问题不是很清楚,但听起来您以选取框模式显示进度条。 “我没死,不知道要花多长时间,但正在努力”模式。通过打开 PBS_MARQUEE 样式标志启用。
您可以使用PBM_SETMARQUEE message 控制动画。允许您完全关闭它或通过显着增加动画时间使其开始爬行。可能有点适合“暂停”模式。默认值为 30 毫秒,在 1000 毫秒时它看起来很诡异。完全冻结它不是一个选项,但没有用户会盯着它看 INT_MAX 毫秒。
【讨论】: