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.

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