![]() |
Desktop Development »
Static & Panel Controls »
Custom Controls
Intermediate
Dynamic LED ControlBy VGirishA blinking LED-style control |
VC6, VC7Win2K, WinXP, MFC, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

This class enables the user to have a blinking effect with a control over the blinking rate per second. They can set the timer of the control. Sometimes, it would be better to show the status of an ongoing operation or if there is any warning , it would be better to display it using an LED control. I faced this situation when developing for a client whose end users were security guards who had no knowledge of computers. So, the interface for them was designed like a TV remote control and I had to incorporate a lot of controls like this in order to make them feel at ease. I would like to tell the people who are going to use this class that its best suited for small controls rather than making it bigger where the effect is lost. It looks more like an ellipse than a LED at bigger proportions.
CDynamicLED class , you can follow the guidelines stated below.
IDC_STATIC. Name it something like
IDC_DYN_LED.IDC__DYN_LED. The category should be a control and the Variable Type should be
CDynamicLED. If the CDynamicLED type does not show up in the Variable type dropdown combo, then you need to recreate the .clw file. Delete the
.clw file and run the class wizard again. CDynamicLED Class are outlined below.
SetLED(CWnd *pWnd, UINT nIDColor, UINT nIDShape, int nTimerInterval)ID_LED_RED
ID_LED_GREEN
ID_LED_BLUE
ID_LED_YELLOW
ID_SHAPE_ROUND
ID_SHAPE_SQUARE
nIDShape value determines whether the shape of the LED would be round or square. nTimerInterval parameter denotes the number of milliseconds. The LED would flash once in
every period denoted by this parameter. You can either have a rapidly blinking LED by setting this
parameter to 100 or have a normally blinking LED which blinks once per second by setting this value
to 1000.SwitchOn and SwitchOff Now let's go to the implementation of this control in your dialog based application.
I have assumed that you have named your dialog class as CMyDialog
Remember that you have created a variable for this static frame. If you have forgotten
about that, please refer to the implementation section above. Assuming that you have named
your variable as m_dynLEDRed for a LED control which is round in shape, going to blink once
every half a second and which is red in colour.
You have to add the following lines in your OnInitDialog function. I have also assumed that you
have named your static frame IDC_STATIC_LED_RED.
CWnd *pWndRed = (CWnd *)GetDlgItem(IDC_STATIC_LED_RED);
m_dynLEDRed.SetLED(pWndRed,ID_LED_RED,ID_SHAPE_ROUND,500);
Incase I want to change the blinking interval of the LED at runtime from half a second to a full
second, then you can use the following code.
// Change the time interval of the LED to 1000 CWnd *pWndRed = (CWnd *)GetDlgItem(IDC_STATIC_LED_RED); m_dynLEDRed.SetLED(pWndBlue,ID_LED_BLUE, ID_SHAPE_ROUND,1000);To change the shape of the LED from round to square or vice versa , you can follow this piece of code.
// Change the shape of the Blue LED from round to square CWnd *pWndRed = (CWnd *)GetDlgItem(IDC_STATIC_LED_RED); m_dynLEDRed.SetLED(pWndBlue,ID_LED_BLUE, ID_SHAPE_SQUARE,1000);If you want to turn off the LED ( I mean switching it off ) , you can use this .
// Switch OFF the Red LED CWnd *pWndRed = (CWnd *)GetDlgItem(IDC_STATIC_LED_RED); m_dynLEDRed.SwitchOff();and to switch it on again, use
// Switch ON the Red LED CWnd *pWndRed = (CWnd *)GetDlgItem(IDC_STATIC_LED_RED); m_dynLEDRed.SwitchOn();
Thats all folks. All luck and have a great time.
With warm regards,
V.Girish
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 29 Jul 2002 Editor: Chris Maunder |
Copyright 2002 by VGirish Everything else Copyright © CodeProject, 1999-2009 Web13 | Advertise on the Code Project |