CStatic-Derived Digital Counter - WITHOUT BITMAPS

.

Description

CStaticCounter is a CStatic derived control that displays a LED style counter - without using bitmap resources
  • No bitmap resources are needed
  • Digits' height width and 'weight' are proportional to the size of the control
  • Uses memory compatible DC to produce flicker-free display

Functions


void SetColorBackGround(COLORREF crColor)
[Optional] Default colours are as shown in above screenshot

void SetColorForeGround(COLORREF crColor)
[Optional] Default colours are as shown in above screenshot

void SetDrawFaded(bool bState)
[Optional] While the "DrawFaded" state is true, the "LED notches" that are not 'lit' are drawn at a third the intensity of the foreground colour

void Display(int nNumber)
Use this to update & display the number of your choice.

How to Implement

  • Add the StaticCounter.h and StaticCounter.cpp to your project
  • Add a normal static control to your dialog box and assign a unique ID, e.g. IDC_STATIC_COUNTER
  • Use classwizard to create a control member variable - say, m_staticCounter
  • In your dialog class' header file, change the "CStatic m_staticCounter" to "CStaticCounter m_staticCounter"
  • Include the header (StaticCounter.h) in your dialog class' header & implementation files
  • Call the Display() function to change the number displayed.

Downloads

Download Sample Executable - 67 Kb
Download demo project - 19 Kb
Download source - 4 Kb


Comments

  • CStaticCounter UPDATE

    Posted by Legacy on 01/19/2000 12:00am

    Originally posted by: Jason Hattingh

    http://www.codeproject.com/staticctrl/StaticCounter.asp

    Reply
  • Thoughts and Minor correction ?

    Posted by Legacy on 08/10/1999 12:00am

    Originally posted by: Rob Wainwright

    I like classes like this, its purpose is clear and is well written. Had a thought about the extension needed to support non numerical values but that is a major change (I think)

    I think The SetColorForeground function needs to delete the brush and recreate it (i.e. in the same manner as the SetColorBackground does).

    There is also an unused member variable, namely m_crColorDimForeground

    Reply
  • "Draw" function eats GDI resources.....

    Posted by Legacy on 07/29/1999 12:00am

    Originally posted by: Per Praem

    The code for CStaticCounter::Draw(CMemDC* pDC, DWORD dwChar, int nCol)needs a minor modification to prevent it
    
    from eating up the GDI resources:

    Replace the line:

    pDC->SelectObject(&pen);

    with

    CPen* pOldPen=pDC->SelectObject(&pen);

    and add the following line

    pDC->SelectObject(pOldPen);

    as a new last line in the Draw function.

    Now the CStaticCounter can run forever without having
    the system to die because it runs out of free GDI resources.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • On-demand Event Event Date: March 19, 2015 The 2015 Enterprise Mobile Application Survey asked 250 mobility professionals what their biggest mobile challenges are, how many employees they are equipping with mobile apps, and their methods for driving value with mobility. Join Dan Woods, Editor and CTO of CITO Research, and Alan Murray, SVP of Products at Apperian, as they break down the results of this survey and discuss how enterprises are using mobile application management and private app stores to …

  • Live Event Date: May 18, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT While the idea of using facial and or gesture recognitions to create a modern, intuitive game seems attractive, some developers may want to leverage Unity 3D as a way to accelerate their development. There are many different ways in which Intel and Unity Technologies have been working together to helps speed the develop of games with the Intel® RealSense™ SDK (Software Developer Kit), so come hear from a panel of experts on what we've done …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date