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

  • 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 …

  • 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.

Most Popular Programming Stories

More for Developers

RSS Feeds

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