CLEDScreen class - LED digital screen with transparency






4.17/5 (8 votes)
Jan 13, 2005
2 min read

84414

4273
A CStatic derived digital LED screen with transparency. Based on "CStaticTime class" of Jason Hattingh.
Introduction
Firstly, excuse me for my bad English.
I long searched for such a class which would allow me to emulate the beautiful digital screen in my program. Class CStaticTime
(author Jason Hattingh, An LED time and value display control) appeared better than others. But in this class, there was no opportunity to set a transparency and there were not many functions necessary to me. Therefore, I have considerably altered the class CStaticTime
, and the new class CLEDScreen
has only a few similarities with the original.
Idea
As for most simple cases, realization of a transparency for me was the use of the function TransparentBlt()
. I have refused drawing directly at a window and have applied drawing in memory ("background canvas").
At initialization of a class in memory, "the storehouse of ready symbols" (symbDC
) is created and also "background canvas" (backDC
). During change of contents of the LEDScreen
, the class takes from symbDC
a ready symbol necessary and transfers it to backDC
. When it is necessary to update a window, a class takes the contents of backDC
and transfers it to a window with TransparentBlt()
.
How To Use
Using the class is very simple.
- Create project.
- Link library msimg32.lib to project.
- Add LEDScreen source files to project.
- Place on a dialog any bitmap image (picture static). This is optional.
- Place on a dialog (owner bitmap if exists)
CStatic
. With ClassWizard, create variablem_screen
for thisCStatic
. - In your dialog declaration, rename
CStatic m_screen
toCLEDScreen m_screen
. Like this:// MyDlg.h class CMyDlg : public CDialog { public: ... // Dialog Data //{{AFX_DATA(CMyDlg) enum { IDD = IDD_MY_DLG }; CLEDScreen m_screen; ... //}}AFX_DATA ... }
- Add to function
OnInitDialog()
a code of initialization of an objectm_screen
, like this:// MyDlg.cpp BOOL CMyDlg::OnInitDialog() { ... m_screen.SetBackWnd(&m_stback); //CStatic m_stback (picture) m_screen.SetColourForeGround(RGB(0,0,0)); m_screen.SetColourFaded(RGB(55,136,230)); m_screen.SetRightAlignement(); m_screen.SetDrawTransparent(true); m_screen.SetDrawFaded(true); m_screen.SetSymbolParams(0, 5, 0, 2); ... }
- Use functions
CLEDScreen::Append(CString str)
, etc.:CLEDScreen::Append(CString str); CLEDScreen::Backspace(); CLEDScreen::Clear(); CLEDScreen::StepBack(); //scrolling CLEDScreen::StepForward(); //scrolling
To Do
- Own bitmap instead of separate
CStatic
for background picture.
History
- Version 0.1 (2005-01-10)
- First realization.
- Version 0.2 (2005-01-19)
- right alignment is added.
- drawing procedures are corrected.
- Version 0.3 (2005-01-20)
- scrolling of long contents is added
- blinking is reduced