CStatic-Derived Digital Counter - WITHOUT BITMAPS



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


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.


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


  • CStaticCounter UPDATE

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

    Originally posted by: Jason Hattingh


  • 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

  • "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:



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

    and add the following line


    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.

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

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Enterprises are increasingly looking to platform as a service (PaaS) to lower their costs and speed their time to market for new applications. Developing, deploying, and managing applications in the cloud eliminates the time and expense of managing a physical infrastructure to support them. PaaS offerings must deliver additional long-term benefits, such as a lower total cost of ownership (TCO), rapid scalability, and ease of integration, all while providing robust security and availability. This report …

Most Popular Programming Stories

More for Developers

RSS Feeds

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