Multiple Clocks

Introduction

This dialog-based application displays several different styles of clocks: analog, binary, decimal, and nixie.

Background

The Nixie tube was used in electronic instruments mainly in the 1960s thru 1980s. It is a neon-filled vacumn tube with 10 elements that can make the neon glow when any one element is grounded. The tube has a common anode with approximately 175 volts DC applied to it. I think it makes a cool clock.

Using the Code

Several methods used in this code are borrowed from other programmers, some from this site (see Credits). The heart of the binary clock is the _itoa(nTime, ibuff, 2); function, where nTime is any integer contaning the hour, minute, or second. ibuff is a char buffer and the 2 is a base, in this case, binary.

Here is the code to display a simple Decimal clock in the Windows Title Bar.

void CMultiClockDlg::DisplayDecimal()
{
   //
   // Get the current time
   //
   CTime time  = CTime::GetCurrentTime();
   int nSecond = time.GetSecond();
   int nMinute = time.GetMinute();
   int nHour   = time.GetHour();
   if (nHour > 12)
      nHour -= 12;
   CString szStr;
   szStr.Format("MultiClock - %.2d:%.2d:%.2d", nHour, nMinute, nSecond);
   ::SetWindowText(m_hWnd, szStr);
}

Points of Interest

The Binary display is grouped: 4 bits for the hour, and 6 bits for the minutes and seconds. I did this because the hour can only be "01" thru "C" and the minutes/seconds "00" thru "3B". The nixie clock uses bitmaps (45X64) for each digit; they are diplayed by calling:

void CMultiClockDlg::FormatTm(CDC *pDC, int nTime, int nPos)
{
   int x, y;
   m_bmp.LoadResource(IDB_BITMAP110);
   x = 8 +(m_bmp.GetWidth() * nPos);
   y = 8;
   switch (nTime)
   {
      case 0:
         m_bmp.LoadResource(IDB_BITMAP100);
         m_bmp.DrawDIB(pDC, x, y);
         break;
   }

One thing I found when writing this code was this: DO NOT USE CDC *pDC = GetDC(); in a loop without using RelaseDC(pDC); My first version would run for 15 to 20 minutes and crash because GetDC() uses 4 bytes of memory every time it is called.

Credits

ClockCtrl—The Analog Clock
Author: P.J. Naughter

Dib256—Load Resource/Paint Bitmap
DibPal
Author: Jorg Konig

History

Version 1.0
Any comments or suggestions are welcome.



Downloads

Comments

  • There are no comments yet. Be the first to comment!

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

Top White Papers and Webcasts

  • U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there is simply not enough quality talent to go around. Tiempo Development is a nearshore software development company. Our headquarters are in AZ, but we are a pioneer and leader in outsourcing to Mexico, based on our three software development centers there. We have a proven process and we are experts at providing our customers with powerful solutions. We transform ideas into reality.

  • Lenovo recommends Windows 8 Pro. "I dropped my laptop getting out of the taxi." This probably sounds familiar to most IT professionals. If your employees are traveling, you know their devices are in for a rough go. Whether it's a trip to the conference room or a convention out of town, any time equipment leaves a user's desk it is at risk of being put into harm's way. Stay connected at all times, whether at the office or on the go, with agile, durable, and flexible devices like the Lenovo® …

Most Popular Programming Stories

More for Developers

RSS Feeds

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