Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: d_yol - 02 Mart 2008, 16:27:27

Başlık: LED kodu
Gönderen: d_yol - 02 Mart 2008, 16:27:27
Dialog ekranda LED göstermek için:
Örnek sonra ekliyecem.



////// LED.H

class CLED : public CStatic
{
public:
CLED();

COLORREF m_crBkgnd, m_crFrgnd_ON, m_crFrgnd_OFF;

BOOL LED_State;

void SetLED(COLORREF crBkgnd, COLORREF crFrgnd_ON, COLORREF crFrgnd_OFF);

void SwitchOn();
void SwitchOff();

afx_msg void OnPaint();
void DrawLed(CDC *pdc);

DECLARE_MESSAGE_MAP()
};


////// LED.CPP

#include "stdafx.h"
#include "LED.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CLED::CLED()
{
LED_State = FALSE;
}

BEGIN_MESSAGE_MAP(CLED, CStatic)
ON_WM_PAINT()
END_MESSAGE_MAP()

void CLED::SetLED(COLORREF crBkgnd, COLORREF crFrgnd_ON, COLORREF crFrgnd_OFF)
{
m_crBkgnd = crBkgnd,
m_crFrgnd_ON = crFrgnd_ON;
m_crFrgnd_OFF = crFrgnd_OFF;
}

void CLED::DrawLed(CDC *pDC)
{
CRect r;

// drawing rectangle
GetClientRect(&r);

   CBrush bkgndBrush(m_crBkgnd);

pDC->FillRect(r, &bkgndBrush);

CPen PenLED, *oldPen;
CBrush BrushLED, *oldBr;

if (LED_State == FALSE)
{
PenLED.CreatePen(0 , 1, m_crFrgnd_OFF);
BrushLED.CreateSolidBrush(m_crFrgnd_OFF);
}
else
{
PenLED.CreatePen(0 , 1, m_crFrgnd_ON);
BrushLED.CreateSolidBrush(m_crFrgnd_ON);
}

oldPen = pDC->SelectObject(&PenLED);
oldBr  = pDC->SelectObject(&BrushLED);

// Draw the actual colour of the LED
pDC->Ellipse(r);

// Draw a thin white coloured circle
CPen Penwhite;
Penwhite.CreatePen(0, 1, RGB(255,255,255));
pDC->SelectObject(&Penwhite);
pDC->Ellipse(r);

// Draw a gray arc at the bottom
CPen Pengray;
Pengray.CreatePen(0, 1, RGB(192,192,192));
pDC->SelectObject(&Pengray);

// The arc function is just to add a 3D effect for the control
CPoint ptStart,ptEnd;
ptStart = CPoint(r.Width()/2,r.bottom);
ptEnd = CPoint(r.right,r.top);

pDC->MoveTo(ptStart);
pDC->Arc(r,ptStart,ptEnd);
CBrush Brush;
Brush.CreateSolidBrush(RGB(255,255,255));
pDC->SelectObject(&Brush);
pDC->SelectObject(&Penwhite);

CPoint tl = r.TopLeft();
tl.Offset(r.Width()/4, r.Height()/4);

CRect rx(tl, CSize(4,4));

pDC->Ellipse(rx);

pDC->SelectObject(oldBr);
pDC->SelectObject(oldPen);
}

void CLED::OnPaint()
{
CPaintDC dc(this);
DrawLed(&dc);
}

void CLED::SwitchOn()
{
LED_State = TRUE;

CDC *pDC;
pDC = GetDC();
DrawLed(pDC);
ReleaseDC(pDC);
}

void CLED::SwitchOff()
{
LED_State = FALSE;

CDC *pDC;
pDC = GetDC();
DrawLed(pDC);
ReleaseDC(pDC);
}

(http://img115.yukle.tc/images/8402LED.JPG)
Başlık: LED kodu
Gönderen: arslan74 - 02 Mart 2008, 17:26:47
Bunu proje olarak uplaod edebilirmisiniz.
Başlık: LED kodu
Gönderen: d_yol - 02 Mart 2008, 18:12:59
LEDCLK (http://rapidshare.com/files/96475900/LEDCLK.zip.html)

Visual Studio 2005 C++