Environment: Windows NT4 SP4, Visual C++ 6
This image shows an example of my CMacSliderCtrl and CMacProgressCtrl. For more
information on the CMacProgressCtrl, please refer to
this article.
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
the corresponding controls you just added. If the CMacSliderCtrl classe
is not in the Variable Type list, choose CSliderCtrl, and manually change
the types in the header file of your dialog class.
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