Just to report that I have added a slider control to Squishy's GUI system. It might not look like much, but the rounded ends took quite a bit of work.
What I've had to do, to support sliders of any size, is to render to an offscreen texture of a fixed size, first filling with white then drawing the end circles over the top with alphablending off, working out the width of the half circles based on the height of the bar so they stay in proportion.
At this point I have a texture that is the correct shape but all white.
I reenable alphablending, then render the bar using this texture, but with a special shader enabled that compares the u value of the texture coordinate with the current value of the slider, halving the colour values if required.
It all sounds a bit complicated but it is the only way I could get the colour fill of the bar to correctly fill into the rounded ends while having nicely antialiased edges to the circular bits.
It is the kind of detail that probably no-one else would ever notice, but it looks pretty nice.
The above menu doesn't actually affect the sound levels yet, but that will be pretty easy.
You can click within the bar to set its position, or click within the bar then drag the mouse to move the level. The bar "captures" mouse input at this point so, like a Win32 scrollbar, you can then drag anywhere on the screen and the bar will follow, obviously locked between its upper and lower limit, until you release the mouse button.
The bar will then communicate position changes (between 0 and 1) with the GUI listener, which can take appropriate action.
Knowing how lazy I am at times, I would of made an image with a cut out circle bar leaving it transparent, than just slide a rectangle box that is white under it when increasing or decreasing volume giving the same effect you have. It just wouldn't look too good because you have transparency on your GUI window.