Click to return to the Component Development home page    
Web Workshop  |  Component Development

StopLite--StopLiteCtl.H


Index for Finished Code

// StopLiteCtl.h : Declaration of the CStopLiteCtrl OLE control class.

/////////////////////////////////////////////////////////////////////////////
// CStopLiteCtrl : See StopLiteCtl.cpp for implementation.

class CStopLiteCtrl : public COleControl
{
DECLARE_DYNCREATE(CStopLiteCtrl)

// stoplight state (values of m_color/Color property)
enum { SL_NONE = 0,
SL_FIRST = 1,// first light in cycle
SL_RED = 1, SL_GREEN = 2, SL_YELLOW = 3, // cycle order
SL_LAST = 3,// last light in cycle
SL_TEST = 4 };// test MUST be last (see SetColor)

// bits corresponding to the three lights; used for drawing
enum { SLBIT_RED = 1, SLBIT_GREEN = 2, SLBIT_YELLOW = 4,  };

// possible colors for light: off, red, green, yellow
enum { SLCOLOR_OFF = RGB(63, 63, 63),// dark gray
SLCOLOR_RED = RGB(255, 0, 0),
SLCOLOR_GREEN = RGB(0, 255, 0), 
SLCOLOR_YELLOW = RGB(255, 255, 0) };

// Constructor
public:
CStopLiteCtrl();

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CStopLiteCtrl)
public:
virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
virtual void DoPropExchange(CPropExchange* pPX);
virtual void OnResetState();
virtual void OnAmbientPropertyChange(DISPID dispid);
//}}AFX_VIRTUAL



// Implementation
private:
void FireRightEvent();
short m_color;

protected:
~CStopLiteCtrl();

DECLARE_OLECREATE_EX(CStopLiteCtrl)    // Class factory and guid
DECLARE_OLETYPELIB(CStopLiteCtrl)      // GetTypeInfo
DECLARE_PROPPAGEIDS(CStopLiteCtrl)     // Property page IDs
DECLARE_OLECTLTYPE(CStopLiteCtrl)// Type name and misc status

// Message maps
//{{AFX_MSG(CStopLiteCtrl)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

// Dispatch maps
//{{AFX_DISPATCH(CStopLiteCtrl)
afx_msg short GetColor();
afx_msg void SetColor(short nNewValue);
afx_msg void Next();
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()

afx_msg void AboutBox();

// Event maps
//{{AFX_EVENT(CStopLiteCtrl)
void FireStop()
{FireEvent(eventidStop,EVENT_PARAM(VTS_NONE));}
void FireCaution()
{FireEvent(eventidCaution,EVENT_PARAM(VTS_NONE));}
void FireGo()
{FireEvent(eventidGo,EVENT_PARAM(VTS_NONE));}
void FireTesting()
{FireEvent(eventidTesting,EVENT_PARAM(VTS_NONE));}
void FireOff()
{FireEvent(eventidOff,EVENT_PARAM(VTS_NONE));}
//}}AFX_EVENT
DECLARE_EVENT_MAP()

// Dispatch and event IDs
public:
enum {
//{{AFX_DISP_ID(CStopLiteCtrl)
dispidColor = 1L,
dispidNext = 2L,
eventidStop = 1L,
eventidCaution = 2L,
eventidGo = 3L,
eventidTesting = 4L,
eventidOff = 5L,
//}}AFX_DISP_ID
};
private:
int TranslateLights();
void DrawLight(CDC* pdc, 
const CRect& rcBounds, 
int nPercentDown, 
int nPercentDiameter, 
COLORREF crColor
);
};


Back to topBack to top

Did you find this material useful? Gripes? Compliments? Suggestions for other articles? Write us!

© 1999 Microsoft Corporation. All rights reserved. Terms of use.