Macintosh-like Slider Control
Posted
by Paul M. Meidinger
on January 11th, 2000
Environment: Windows NT4 SP4, Visual C++ 6

This class is my attempt at recreating the slider control of the Macintosh. This control (CMacSliderCtrl) allows you to change the thumb, channel and selection colors.
Public Member Functions
void SetChannelColor(COLORREF crColor) COLORREF GetChannelColor() void SetSelectionColor(COLORREF crColor) COLORREF GetSelectionColor() void SetThumbColor(COLORREF crColor) COLORREF GetThumbColor()
Steps to add a CMacSliderCtrl to a dialog
Known bugs
There is one problem with the CMacSliderCtrl class that have been unable to fix. If run the sample application and change the slider's thumb, channel or selection colors, you will notice that the colors do not change immediately. If you click on the slider, then the color will change. In my SetXXXColor() functions, I call RedrawWindow() so the control is drawn with the new color. RedrawWindow() starts the painting process, which sends the NM_CUSTOMDRAW message for the prepainting stage. I then return CDRF_NOTIFYITEMDRAW in my OnCustomDraw, which is supposed to request prepaint notifications for each item. But the item prepaint notifications are never sent. If anyone can come up with a solution for this I would love to hear about it.Downloads
Special Note: The demo and source files are the sames available in the CMacProgressCtrl article.Download demo project - 35 Kb
Download source - 11 Kb

Comments
SetChannelColor() doesn't work if change orientation to Horizontal?
Posted by Legacy on 03/16/2000 12:00amOriginally posted by: zigzag
Very COOL! But if you change the orientation of CMacSliderCtrl from Vertical to Horizontal, the SetChannelColor() will not work. Can't change the Channel Color of CMacSliderCtrl!
ReplyWhy?
How to do a transparent background beside CMacSliderCtrl?
Posted by Legacy on 02/01/2000 12:00amOriginally posted by: Roland Chanishvily
How to do a transparent background beside CMacSliderCtrl?
ReplyI am beginner, sorry if question foolish ;(
Kludgy, but it fixes the redraw-after-color-change problem...
Posted by Legacy on 01/13/2000 12:00amOriginally posted by: James R. Twine
Reply