Extended Spincontrol class
Ultimate ToolBox COXSpinCtrl class

The class COXSpinCtrl is a class that extends the MFC class CSpinButtonCtrl. So in fact it extends the functionality of the common control that is being wrapped by MFC.

Apart from the two buttons (up and down) it shows a small rectangle (called "the spin thumb") in between these two buttons. When the user clicks and holds this rectangle, the mouse cursor will change shape, and user can drag the mouse to increase or decrease the value.

Up and down buttons have the same effect as these buttons on the standard spin control. Extended functionality of the thumb can be switched off (even during run-time). So if it's necessary, COXSpinCtrl can be used exactly as the standard spin, because functionality of MFC's CSpinButtonCtrl is completely supported (inherited) by COXSpinCtrl.
Features:
•	The thumb enabling or disabling is set during COXSpinCtrl object construction, but you can swap its enabling/disabling at the any moment later. 
•	Mouse double click on the thumb swaps the spin value between the outer limits. If the spin value doesn't equal any of outer limits, double click set it to the nearest limit. 
•	When user clicks the thumb and drags the mouse, change of mouse coordinates is translated to spin value change. COXSpinCtrl supports two methods of such translation: a) one screen pixel corresponds to one spin unit; and b) screen borders are considered as spin value limits, so one spin unit can be correlated with various number of pixels. These methods are represented by its constants and carried out by virtual function ComputeValueFromDeltaPixel(). So user can define his/her own constants and override this function to realize own translation methods.