Download demo project - 32 Kb
Download source files - 8 Kb
The CStaticCounter
class simplifies the display of time and numerical
values using a digital-style counter - without using bitmaps.
The class uses Keith Rule's double-buffering
class to completely remove flicker, and it uses MoveTo/LineTo
for
drawing, and therefore has no dependancies on bitmaps.
The original class was written quite a while ago now and can be found at CodeGuru. This
version, however, has a lot more functionality. New features include:
- Floating Point display
- Time Display
- Bug fixed: Memory leak in Draw() function
- Mouse interaction (optional) with the ability to make large & small changes, and
these changes adapt to whether the control is in 'float' or 'integer' mode.
- 3D Progress bar class (I 'borrowed' the technique from the very cool progress control by Paul
Meidinger) which I implemented as a separate class for max re-use
- Built-in (optional) notification. Trap WM_UPDATE_STATIC messages in your dialog and get
up-to-date change notifications when user interacts with the control.
- Supply ID's to each or any of your
CStaticCounter
controls to enable you to
identify them upon trapping the WM_UPDATE_STATIC message
- Set (optional) blank padding for either float or integer displays
- Define your own format strings to further customise the output display of the
CStaticCounter
The class also uses static control's dimensions to calculate metrics, which means it'll
draw well formed digits with minimal intervention, regardless of the control's size.
How to use the CStaticCounter
If the control is being used to display integer values:
Single Click Left Mouse Button: | Decreases the value by 1 |
Single Click Right Mouse Button: | Increases the value by 1 |
Left Mouse Button and drag: | Increases or decreases by (mouse distance*1) |
Right Mouse Button and drag: | Increases or decreases (mouse distance*0.01) - but
displays a whole number |
If the control is being used to display floating point values:
Single Click Left Mouse Button: | Decreases the value by 0.01 |
Single Click Right Mouse Button: | Increases the value by 0.01 |
Left Mouse Button and drag: | Increases or decreases by (mouse distance*1) |
Right Mouse Button and drag: | Increases or decreases (mouse distance*0.01) |
Display Related Methods
void Display(CString strDisplay)
This function will display your string in a digital counter style, ignoring all
characters except: 0 1 2 3 4 5 6 7 8 9 . :
void Display(UINT uSecs=0, UINT uMins=0, UINT uHours=0, UINT uDays=0,
CString strFormat="%D:%H:%M:%S")
This function enables you to simply tell the control to display, for instance, 5196
seconds by simply typing Display(5196)
. The output will be displayed in
D:H:M:S format unless you change the format string (last parameter) accordingly.
void DisplayCurrentTime(CString strFormat = "%H:%M:%S")