Download demo project - 82 Kb
Download source files - 7 Kb

I needed a round slider control to let my users enter an angle.
I thought this could be useful to others, so I wrote a general class for it using some of the
functions from Chris Maunder's CRoundButton class.
To use, simply add a slider to your dialog.
Enlarge it until it covers an approximately square area.
In your dialog class, associate a control variable (say m_rscMySlider
), with
the slider.
If you have told class wizard about CRoundSliderCtrl
, you will be able to select it
when you define the control variable. If not, just go for CSliderCtrl
and manually edit
the definition in your dialog header file, changing CSliderCtrl
to
CRoundSliderCtrl
.
If you do not like using DDX then you can just subclass the control.
In OnInitDialog()
you would call SetRange()
, SetPos()
,
etc. to customize the look and feel of the round slider control. The full API of the control is
as follows:
virtual void SetText(const CString& strNewText);
virtual CString GetText() const;
virtual void SetKnobRadius(const int nNewKnobRadius);
virtual int GetKnobRadius() const;
virtual void SetDragByKnobOnly(const bool bDragByKnobOnly);
virtual bool GetDragByKnobOnly() const;
virtual void SetZero(const int nZero);
virtual int GetZero() const;
virtual void SetInverted(const bool bNewInverted = true);
virtual bool GetInverted() const;
virtual void SetRadioButtonStyle(const bool bNewRadioButtonStyle = true);
virtual bool GetRadioButtonStyle() const;
virtual void SetDialColor(const COLORREF crBkgnd);
virtual void SetKnobColor(const COLORREF crBkgnd);
virtual void SetTextColor(const COLORREF crText);
virtual void SetFontBold(const bool bSet = true);
virtual void SetFontUnderline(const bool bSet = true);
virtual void SetFontItalic(const bool bSet = true);
virtual void SetFontSize(const int nSize);
virtual void SetFontName(const CString& strFont);