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 1960's thru 1980's.
It is a neon filled vacuum tube that has 10 elements that can make the neon glow when
any one element is grounded. The tube has a common anode with approx. 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 function
_itoa(nTime, ibuff, 2);
where
nTime
is any integer
containing the hour, minute or second.
ibuff
is a
char
buffer and the 2 is a base, in this case, binary.
The code to display a simple Decimal clock in the Windows Title Bar.
void CMultiClockDlg::DisplayDecimal()
{
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 which are displayed 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 writing this code, 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
Conclusion
Any comments or suggestion are welcome.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.