How can I use a meter-style progress bar?

Posted by Yadyn on Stack Overflow See other posts from Stack Overflow or by Yadyn
Published on 2010-04-19T22:29:42Z Indexed on 2010/04/19 22:33 UTC
Read the original article Hit count: 234

Filed under:
|
|

In Vista/7, the Windows Explorer shell window makes use of a special kind of static progress bar to display hard drive space.

With default styles, this bar is blue colored and non-animated. It also turns red colored when it gets close to being full (low disk space).

Using messaging, I can tell the Windows Forms ProgressBar control to update its state to Paused and Error (yellow and red colored, respectively), which works fine, but these are still specific to progress.

In the Windows User Experience Guidelines, it specifically points out this "meter" variant of the Progress Bar:

This pattern isn't a progress bar, but it is implemented using the progress bar control. Meters have a distinct look to differentiate them from true progress bars.

They say it "is implemented using the progress bar control", so... how? What message could I send to the control to have it behave this way?

I've seen that you can send messages for setting the bar color, but the documentation says these calls are ignored when visual styles are enabled. Nothing else in the Windows API documentation for raw ProgressBar controls seemed to suggest a way to do this. Am I just stuck making a custom drawn bar? I'd really like to utilize the OS whenever possible so that the application will appear consistent throughout different OS versions. I realize that pre-Vista versions probably won't support this, though.

I'm looking for a Windows Forms solution, but I wonder if it is even exposed at all via Win32 API.

© Stack Overflow or respective owner

Related posts about winforms

Related posts about explorer