在 Vista/7 中,Windows Explorer shell 窗口使用一种特殊的静态进度条来显示硬盘空间。
使用默认样式,此栏为蓝色且无动画。当它接近满时(磁盘空间不足),它也会变成红色。
使用消息传递,我可以告诉 Windows 窗体 ProgressBar 控件将其状态更新为 Paused 和 Error(分别为黄色和红色),这可以正常工作,但这些仍然是特定于进度的。
在Windows User Experience Guidelines中,它特别指出了进度条的这种“仪表”变体:
此模式不是进度条,而是使用进度条控件实现的。仪表具有独特的外观,可以将它们与真正的进度条区分开来。
他们说它“是使用进度条控件实现的”,那么......怎么样?我可以向控件发送什么消息以使其以这种方式运行?
我已经看到您可以发送设置条形颜色的消息,但文档说启用视觉样式时这些调用将被忽略。原始 ProgressBar 控件的 Windows API 文档中似乎没有任何其他建议可以做到这一点。我只是坚持制作自定义绘制的条吗?我真的很想尽可能地使用操作系统,以便应用程序在不同的操作系统版本中看起来一致。不过,我意识到,Vista 之前的版本可能不支持这一点。
我正在寻找一个 Windows 窗体解决方案,但我想知道它是否完全通过 Win32 API 公开。