Transparent digital clock






4.82/5 (38 votes)
A transparent digital clock program
Introduction
Clock is a simple program in C++ which shows the current local time in a transparent window.
When time changes the window region changes as well using only the area necessary for displaying time. Instead of setting a timer to read time,
the program uses a thread which posts a WM_CLOCKTIMETICK
message
each second.
Brief description
Program displays time in 4 LEDs as shown in the following image:
Each LED consists of 7 lines so we need an array of 4 * 7 = 28 elements to describe each line. Each element shows the starting position of the corresponding line and how this is going to be drawn, horizontally or vertically.
// structure that describes each element typedef struct _MZDrawObj { int xPos; // x-coordinate int yPos; // y-coordinate char cType; // 1: horizontaly, 2: verticaly } MZDrawObj; // array for describing each line MZDrawObj m_obj[4][7];
We also need to represent each hour (0 to 23) and minute (0 to 59) with the
respective lines that will be drawn. In order to achieve this I use an array of
24 elements (WORD m_objHour[24]
) for the first 2 LEDs (hour LEDs) and another one of 60 elements
(WORD m_objMin[60]
) for the last 2 LEDs (minute LEDs).
Each element describes exactly which lines will be drawn (7 bits for each LED).
0 0
***** *****
* * * *
5 * * 1 5 * * 1
* 6 * * 6 *
***** *****
* * * *
4 * * 2 4 * * 2
* * * *
***** *****
3 3
1st BYTE 2nd BYTE
- Function
InitDrawObj
initializes array elements. - Function
DrawObj
draws the specifiedm_obj
element. - Function
DrawHour
draws the specifiedm_objHour
element (hour LEDs). - Function
DrawMin
draws the specifiedm_objMin
element (minute LEDs). - Function
DrawDot
draws the separator dot between hour leds and minute leds. It is called twice. - Function
DrawTime
does the whole drawing.
Defining window region
Variable HRGN m_hWndRgn
defines window region.
Function DefineWndRegion
reads local time and creates window region.
When time changes window region changes as well.
Thread function TimeTickThread
posts a message each second which calls
OnTimeTick
responsible for changing window region and drawing the window.
Using the code
Source code is free for anyone who might find it interested.