EZSnakeCtrl-Indefinite Cyclic Progress control

Environment: Visual C++ 6 (SP2), Windows 98

I got the hunch from Netscape's progress control in the status bar. Since most of the complexity is hidden in the implementation, using this is as easy as using a normal progress bar. This control is not derived from CProgressBarctrl but from CStatic to ensure simplicity and efficiency. An imitation of Netscape status bar as well as a dialog based demo like that of CGradientProgress is included in the sample zip file. If this control is used in a dialog box, simply put a CStatic Place holder in the dialog and subclass it to CEZSnakeCtrl. Now you can customize the look & feel of the control. Various options available are:


 //Get & Set The Maximum value of the progress control
 //0 is assumed as the minimum.
 int GetMax();
 void SetMax(int nMax); 

 //Get & Set the size of the snake      
 int GetSize();
 void SetSize(int nSize);

 //Get & Set the the Steps ->unit increment
 int GetStep();
 void SetStep(int nStep);

 //Get The Head Position
 int GetPos();

 //Get The tail position
 int GetTail();

 //Get the direction of the snake
 BOOL IsReverse();

 //Get & Set the Gradient begin & end colors
 COLORREF GetGradientEndColor();
 COLORREF GetGradientStartColor();
 void SetGradientFill(COLORREF clrStart,COLORREF clrEnd);

 //Get & Set Background color
 COLORREF GetBkColor();
 void SetBkColor(COLORREF clrFG);

 //Operations<>BR
 int StepIt();//Move the snake.
 void ResetProgress();//reset the snake

I think the demo project can do rest of the explaining.

Downloads

Download demo project - 71 Kb
Download source - 3 Kb