Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

LED kodu

Başlatan d_yol, 02 Mart 2008, 16:27:27

d_yol

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);
}


arslan74

Bunu proje olarak uplaod edebilirmisiniz.

d_yol

LEDCLK

Visual Studio 2005 C++