⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.cpp

📁 MDF监控源码2
💻 CPP
字号:
// LED.cpp : 实现文件
//

#include "stdafx.h"
#include "SerialTest.h"
#include "LED.h"
#include ".\led.h"


// CLED

IMPLEMENT_DYNAMIC(CLED, CStatic)
CLED::CLED()
: m_CurValue(0)
, OverMax(false)
, OverMin(false)
, m_Title(_T(""))
{

	m_CurValue = 0;

}

CLED::~CLED()
{
}


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



// CLED 消息处理程序


void CLED::OnPaint()
{
	//bool blResult;
	//CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CStatic::OnPaint()
	 DrawStatus();

}



void	CLED::SetValue(float fValue)
{

	m_CurValue = fValue;
	if (fValue > m_maxValue )
	{
		OverMax = true;
		OverMin = false;
	}
	else if (fValue < m_minValue )
	{
		OverMin = true;
		OverMax = false;
	}
	else
	{
		OverMax = false;
		OverMin = false;
	}
	//增加绘图调用
	DrawStatus();
	this->Invalidate(0);

}
float	CLED::GetValue()
{
	return m_CurValue;
}
void	CLED::SetDotNum(int iValue)
{
	m_DotNum = iValue;

}
int		CLED::GetDotNum()
{
	return m_DotNum;
}



void CLED::DrawStatus(void)
{
	const int CST_LINEWIDTH = 1;		//边框线的宽度
	bool blResult;
	CRect rect,lpRect;
	CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CStatic::OnPaint()
	CDC *dcMem = new CDC();
	CBitmap *bmOld;
	blResult = dcMem->CreateCompatibleDC(&dc);

	CBitmap *bmAct = new CBitmap();
	CBitmap *bmNomal = new CBitmap();
	CBitmap *bmMsk = new CBitmap();
	bmAct->LoadBitmap(IDB_BMPRED);
	bmMsk->LoadBitmap(IDB_BMPMASK);
	bmNomal->LoadBitmap(IDB_BMPGREEN);

	//绘制显示背景

	COLORREF clBackGD = RGB(230,230,230);
	COLORREF clRed = RGB(255,50,50);
	COLORREF clRedFrame = RGB(200,0,0);

	CPen *pen = new CPen(PS_SOLID,CST_LINEWIDTH,clRedFrame);
	CBrush *brush = new CBrush(clBackGD);

	GetWindowRect(&rect);
	ScreenToClient(rect);
	dc.SetBkColor(clBackGD);
	dc.SetBkMode(OPAQUE);
	
	/*
	
	brushOld = dc.SelectObject(brush);
	lpRect = CRect(2,2,rect.right-2,rect.bottom-2);
	dc.FillRect(&lpRect,brush);
	dc.SelectObject(brushOld);
	*/

	CPen *penOld = dc.SelectObject(pen);
	dc.Rectangle(rect);
	dc.SelectObject(penOld);

	//绘制字体框
	CBrush *brushOld = dc.SelectObject(brush);
	lpRect = CRect(2,26,rect.right-2,rect.bottom-2);
	dc.FillSolidRect(&lpRect,clBackGD);
	//dc.FillRect(&lpRect,brush);
	dc.SelectObject(brushOld);


	lpRect = CRect((rect.right - 32)/3,6,16,16);
	if (OverMax)
		bmOld = dcMem->SelectObject(bmAct);
	else
		bmOld = dcMem->SelectObject(bmNomal);
	dc.MaskBlt(lpRect.left,lpRect.top,lpRect.right,lpRect.bottom,dcMem,0,0,*bmMsk,0,0,MAKEROP4(SRCCOPY,SRCAND));
	dcMem->SelectObject(bmOld);

	lpRect = CRect((rect.right - 32)/3 * 2 + 16,6,16,16);
	if (OverMin)
		bmOld = dcMem->SelectObject(bmAct);
	else
		bmOld = dcMem->SelectObject(bmNomal);
	dc.MaskBlt(lpRect.left ,lpRect.top,lpRect.right,lpRect.bottom,dcMem,0,0,*bmMsk,0,0,MAKEROP4(SRCCOPY,SRCAND));
	dcMem->SelectObject(bmOld);
	

	CFont ftTitle;
	ftTitle.CreateFont(30,16,0,0,FW_BOLD,0,0,0,ANSI_CHARSET,
				OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
				VARIABLE_PITCH|FF_SWISS,_T("Impact"));
	CFont *fntOld = dc.SelectObject(&ftTitle);
	
	CString strVal;

	strVal.Format("%4.1f",m_CurValue);
	lpRect = CRect(0,30,rect.right,rect.bottom);
	dc.SetTextColor(clRed);
	dc.DrawText( strVal,lpRect,DT_CENTER);
	dc.SelectObject(fntOld);
	//this->UpdateWindow();
	

}

void CLED::IniControl(void)
{
	DrawStatus();
}

void CLED::SetTitle(CString strValue)
{
	m_Title = strValue;
}

CString CLED::GetTitle(void)
{
	return m_Title;
}

void CLED::SetMinValue(float fValue)
{
	m_minValue = fValue;
}

void CLED::SetMaxValue(float fValue)
{
	m_maxValue = fValue;
}

void CLED::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
	CStatic::OnActivate(nState, pWndOther, bMinimized);
	DrawStatus();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -