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

📄 pageimport.cpp

📁 485通讯接口模块的编程应用
💻 CPP
字号:
// PageImport.cpp : implementation file
//

#include "stdafx.h"
#include "DK20DieselizeDynamotor.h"
#include "PageImport.h"
#include "Led.h"
#include "Meter.h"
#include "Thermometer.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPageImport dialog
extern BOOL bChinese;
extern CLed m_led[9];
extern CMeter m_meter[9];
extern CThermometer m_thermoneter[3];

CPageImport::CPageImport(CWnd* pParent /*=NULL*/)
	: CDialog(CPageImport::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPageImport)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CPageImport::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPageImport)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPageImport, CDialog)
	//{{AFX_MSG_MAP(CPageImport)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

#define  ID_LED WM_USER +500
#define  ID_THERMOMETER WM_USER +510

/////////////////////////////////////////////////////////////////////////////
// CPageImport message handlers

BOOL CPageImport::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	VERIFY(m_fontI.CreateFont(
		24,                        // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_BOLD,                 // nWeight
		FALSE,                     // bItalic
		FALSE,                     // bUnderline
		0,                         // cStrikeOut
		ANSI_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           
		DEFAULT_PITCH | FF_SWISS, 
		_T("Arial")));

	CRect rcLed1(5,427,145,567);
	for (int i=0;i<9;i++)
	{
		CRect rc1;
		rc1=rcLed1;
		m_led[i].Create(_T("") , WS_VISIBLE|WS_CHILD ,  rc1,this , ID_LED+i);
		m_led[i].SetUpperValue(0.0f) ;   
		m_led[i].SetLowerValue(0.0f) ; 
		m_led[i].SetCurValue(0.0f) ; 
		m_led[i].SetStatus(2 ) ;
		rcLed1.left=rc1.left + 135;
		rcLed1.right=rc1.right + 135;
		
		if (bChinese)
		{
			switch(i) {
			case 0:
				m_led[0].SetText(_T("1#主机转速"))  ; 
				break;
			case 1:
				m_led[1].SetText(_T("1#高温水出机温度"))  ; 
				break;
			case 2:
				m_led[2].SetText(_T("1#滑油进机压力"))  ; 
				break;
			case 3:
				m_led[3].SetText(_T("2#主机转速"))  ; 
				break;
			case 4:
				m_led[4].SetText(_T("2#高温水出机温度"))  ; 
				break;
			case 5:
				m_led[5].SetText(_T("2#滑油进机压力"))  ; 
				break;
			case 6:
				m_led[6].SetText(_T("3#主机转速"))  ; 
				break;
			case 7:
				m_led[7].SetText(_T("3#高温水出机温度"))  ; 
				break;
			default:
				m_led[8].SetText(_T("3#滑油进机压力"))  ; 
			}
		}
		else
		{
			switch(i) {
			case 0:
				m_led[0].SetText(_T("1#Engine Speed"))  ; 
				break;
			case 1:
				m_led[1].SetText(_T("1#H.T-FW TEMP"))  ; 
				break;
			case 2:
				m_led[2].SetText(_T("1#L.O PRESS"))  ; 
				break;
			case 3:
				m_led[3].SetText(_T("1#Engine Speed"))  ; 
				break;
			case 4:
				m_led[4].SetText(_T("1#H.T-FW TEMP"))  ; 
				break;
			case 5:
				m_led[5].SetText(_T("1#L.O PRESS"))  ; 
				break;
			case 6:
				m_led[6].SetText(_T("1#Engine Speed"))  ; 
				break;
			case 7:
				m_led[7].SetText(_T("1#H.T-FW TEMP"))  ; 
				break;
			default:
				m_led[8].SetText(_T("1#L.O PRESS"))  ; 
			}
		}
		
	}

	/*CRect rcLed2(130,80,250,200);
	for (i=3;i<6;i++)
	{
		CRect rc1;
		rc1=rcLed2;
		m_led[i].Create(_T("") , WS_VISIBLE|WS_CHILD ,  rc1,this , ID_LED+i);
		m_led[i].SetUpperValue(0.0f) ;   
		m_led[i].SetLowerValue(0.0f) ; 
		m_led[i].SetCurValue(0.0f) ; 
		m_led[i].SetStatus(2 ) ;
		rcLed2.left=rc1.left;
		rcLed2.top=rc1.bottom+41;
		rcLed2.right=rc1.right;
		rcLed2.bottom=rc1.bottom+171;
		
		if (bChinese)
		{
			switch(i) {
			case 3:
				m_led[3].SetText(_T("2#主机转速"))  ; 
				break;
			case 4:
				m_led[4].SetText(_T("2#高温水出机温度"))  ; 
				break;
			default:
				m_led[5].SetText(_T("2#滑油进机压力"))  ; 
			}
		}
		else
		{
			switch(i) {
			case 3:
				m_led[3].SetText(_T("2# Engine speed"))  ; 
				break;
			case 4:
				m_led[4].SetText(_T("2# H.T-FW TEMP"))  ; 
				break;
			default:
				m_led[5].SetText(_T("2# L.O press"))  ; 
			}
		}
		
	}
	

	CRect rcLed3(255,80,375,200);
	for (i=6;i<9;i++)
	{
		CRect rc1;
		rc1=rcLed3;
		m_led[i].Create(_T("") , WS_VISIBLE|WS_CHILD ,  rc1,this , ID_LED+i);
		m_led[i].SetUpperValue(0.0f) ;   
		m_led[i].SetLowerValue(0.0f) ; 
		m_led[i].SetCurValue(0.0f) ; 
		m_led[i].SetStatus(2 ) ;
		rcLed3.left=rc1.left;
		rcLed3.top=rc1.bottom+41;
		rcLed3.right=rc1.right;
		rcLed3.bottom=rc1.bottom+171;
		
		if (bChinese)
		{
			switch(i) {
			case 6:
				m_led[6].SetText(_T("3#主机转速"))  ; 
				break;
			case 7:
				m_led[7].SetText(_T("3#高温水出机温度"))  ; 
				break;
			default:
				m_led[8].SetText(_T("3#滑油进机压力"))  ; 
			}
		}
		else
		{
			switch(i) {
			case 6:
				m_led[6].SetText(_T("3# Engine speed"))  ; 
				break;
			case 7:
				m_led[7].SetText(_T("3# H.T-FW TEMP"))  ; 
				break;
			default:
				m_led[8].SetText(_T("3# L.O press"))  ; 
			}
		}
		
	}*/


	CRect rcMeter1(5,30,235,225);
	for (i=0;i<2;i++)
	{
		CRect rc1=rcMeter1;
		m_meter[i].Create(_T(""),WS_VISIBLE|WS_CHILD , rc1,this,WM_USER+300+i)  ; 
		COLORREF	m_colorNeedle = RGB(37,219,13); 
		m_meter[i].SetNeedleColor(m_colorNeedle);
		m_meter[i].SetColorTick(TRUE);
		m_meter[i].SetAngleRange(180 , 360) ; 
		m_meter[i].SetScaleDecimals(0) ; 
		
		m_meter[i].UpdateNeedle(0) ; 
		m_meter[i].SetUpperValue(100.0f) ; 
		m_meter[i].SetLowerValue(-30.0f)  ;
		rcMeter1.top=rc1.top + 196 ;
		rcMeter1.bottom=rc1.bottom + 196 ;
	}

	CRect rc5(445,30,665,225);
	for (i=2;i<4;i++)
	{
		CRect rc1=rc5;
		m_meter[i].Create(_T(""),WS_VISIBLE|WS_CHILD , rc1,this,WM_USER+300+i)  ; 
		COLORREF	m_colorNeedle = RGB(37,219,13); 
		m_meter[i].SetNeedleColor(m_colorNeedle);
		m_meter[i].SetColorTick(TRUE);
		m_meter[i].SetAngleRange(180 , 360) ; 
		m_meter[i].SetScaleDecimals(0) ; 
		
		m_meter[i].UpdateNeedle(0) ; 
		m_meter[i].SetUpperValue(100.0f) ; 
		m_meter[i].SetLowerValue(-30.0f)  ; 
		rc5.top=rc1.top + 196 ;
		rc5.bottom=rc1.bottom + 196 ;
	}

	CRect rc6(860,30,1080,225);
	for (i=4;i<6;i++)
	{
		CRect rc1=rc6;
		m_meter[i].Create(_T(""),WS_VISIBLE|WS_CHILD , rc1,this,WM_USER+300+i)  ; 
		COLORREF	m_colorNeedle = RGB(37,219,13); 
		m_meter[i].SetNeedleColor(m_colorNeedle);
		m_meter[i].SetColorTick(TRUE);
		m_meter[i].SetAngleRange(180 , 360) ; 
		m_meter[i].SetScaleDecimals(0) ; 
		
		m_meter[i].UpdateNeedle(0) ; 
		m_meter[i].SetUpperValue(100.0f) ; 
		m_meter[i].SetLowerValue(-30.0f)  ; 
		rc6.top=rc1.top + 196 ;
		rc6.bottom=rc1.bottom + 196 ;
	}

	CString strmeter;
	if (bChinese)
	{	
		strmeter="1#主机转速(X10 r/min)";
		m_meter[0].SetUnits(strmeter);
		m_meter[0].SetRange(0,90);
		strmeter="1#主机滑油压力(MPA)";
		m_meter[1].SetUnits(strmeter);
		m_meter[1].SetRange(0,10);
		strmeter="2#主机转速(X10 r/min)";
		m_meter[2].SetUnits(strmeter);
		m_meter[2].SetRange(0,90);
		strmeter="2#主机滑油压力(MPA)";
		m_meter[3].SetUnits(strmeter);
		m_meter[3].SetRange(0,10);
		strmeter="3#主机转速(X10 r/min)";
		m_meter[4].SetUnits(strmeter);
		m_meter[4].SetRange(0,90);
		strmeter="3#主机滑油压力(MPA)";
		m_meter[5].SetUnits(strmeter);
		m_meter[5].SetRange(0,10);
		/*strmeter="3#主机转速";
		m_meter[6].SetUnits(strmeter);
		m_meter[6].SetRange(0,900);
		strmeter="3#主机高温水出机温度";
		m_meter[7].SetUnits(strmeter);
		m_meter[7].SetRange(0,100);
		strmeter="3#主机滑油压力";
		m_meter[8].SetUnits(strmeter);
		m_meter[8].SetRange(0,10);*/
	}
	else
	{
		strmeter="1# Diesel Speed(X10 r/min)";
		m_meter[0].SetUnits(strmeter);
		m_meter[0].SetRange(0,90);
		strmeter="1# L.O press(MPA)";
		m_meter[1].SetUnits(strmeter);
		m_meter[1].SetRange(0,10);
		strmeter="2# Diesel Speed(X10 r/min)";
		m_meter[2].SetUnits(strmeter);
		m_meter[2].SetRange(0,90);
		strmeter="2# L.O press(MPA)";
		m_meter[3].SetUnits(strmeter);
		m_meter[3].SetRange(0,10);
		strmeter="3# Diesel Speed(X10 r/min)";
		m_meter[4].SetUnits(strmeter);
		m_meter[4].SetRange(0,90);
		strmeter="2# L.O press(MPA)";
		m_meter[5].SetUnits(strmeter);
		m_meter[5].SetRange(0,10);
		/*strmeter="3# Diesel Speed";
		m_meter[6].SetUnits(strmeter);
		m_meter[6].SetRange(0,900);
		strmeter="3# Hot Water-out Temperature";
		m_meter[7].SetUnits(strmeter);
		m_meter[7].SetRange(0,100);
		strmeter="3# Lubrication Pressure";
		m_meter[8].SetUnits(strmeter);
		m_meter[8].SetRange(0,10);*/
	}

	CRect rcThermometer(240,20,440,425);
	for ( i = 0 ; i < 3 ; i++ )
	{
		CRect rc1;
		rc1 = rcThermometer; 
		rc1.left = rcThermometer.left + i* 427 + i*5 ;
		rc1.right = rc1.left + 135 ;
	    m_thermoneter[i].Create(_T(""),WS_CHILD | WS_TABSTOP | WS_VISIBLE,rc1,this,ID_THERMOMETER+1000+i);//(0,56,1280,622)
	}

	if (bChinese)
	{
		m_thermoneter[0].SetName("1#高温水温度");
		m_thermoneter[1].SetName("2#高温水温度");
		m_thermoneter[2].SetName("3#高温水温度");
	}
	else
	{
		m_thermoneter[0].SetName("1#H.T-FW TEMP");
		m_thermoneter[1].SetName("2#H.T-FW TEMP");
		m_thermoneter[2].SetName("3#H.T-FW TEMP");
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPageImport::OnPaint() 
{
	CPaintDC dc(this); 
	CRect rcClient ;   
	GetClientRect(&rcClient)  ; 
	CDC memDc ; 
	memDc.CreateCompatibleDC(&dc)  ; 
	CBitmap bitmap1 ; 
	bitmap1.CreateCompatibleBitmap(&dc , rcClient.Width(),rcClient.Height())  ; 
	
	CBitmap *oldBitmp1 = memDc.SelectObject(&bitmap1)  ; 
	
	memDc.FillSolidRect(&rcClient , RGB(173,211,198)) ; 
    
	CRect rc2(0 , 0 , 1280, 20) ;
	DrawGradientFill(&memDc , &rc2 , RGB(237,231,205) ,RGB(244,198,255),5) ;

	memDc.SetTextColor(RGB(0,0,0)) ; 
	memDc.SetBkMode(TRANSPARENT)   ; 

	if (bChinese)
		memDc.DrawText(_T("柴油机发电机组关键报警值实时信息"), &rc2 , DT_CENTER |DT_VCENTER	);
	else
		memDc.DrawText(_T("Dynamotor Real-time Import-Information"), &rc2 , DT_CENTER |DT_VCENTER	);
	 	
	dc.BitBlt(0,0,rcClient.Width() , rcClient.Height() , &memDc , 0,0,SRCCOPY) ; 
	memDc.SelectObject(oldBitmp1)  ; 
	bitmap1.DeleteObject() ; 
	memDc.DeleteDC() ; 
		
	DeleteObject(oldBitmp1)  ; oldBitmp1 =NULL ; 
	ReleaseDC(&dc) ; 
}

void CPageImport::DrawGradientFill(CDC *pDC, CRect *pRect, COLORREF crStart, COLORREF crEnd, int nSegments)
{
	COLORREF cr;
	int nR = GetRValue(crStart);
	int nG = GetGValue(crStart);
	int nB = GetBValue(crStart);
	
	int neB = GetBValue(crEnd);
	int neG = GetGValue(crEnd);
	int neR = GetRValue(crEnd);
	
	if(nSegments > pRect->Height())
		nSegments = pRect->Height();
	
	int nDiffR = (neR - nR);
	int nDiffG = (neG - nG);
	int nDiffB = (neB - nB);
	
	int ndR = 256 * (nDiffR) / (max(nSegments,1));
	int ndG = 256 * (nDiffG) / (max(nSegments,1));
	int ndB = 256 * (nDiffB) / (max(nSegments,1));
	
	nR *= 256;
	nG *= 256;
	nB *= 256;
	
	neR *= 256;
	neG *= 256;
	neB *= 256;
	
	int nCY = pRect->Height() / max(nSegments,1),  nTop = pRect->top , nBottom =nTop;
	
	CPen *hpen =(CPen*) pDC->SelectStockObject(NULL_PEN);
	for (int i = 0; i < nSegments; i++, nR += ndR, nG += ndG, nB += ndB)
	{
		if (i == (nSegments - 1))
			nTop = pRect->bottom;
		else
			nTop +=  nCY;
		
		cr = RGB(nR / 256, nG / 256, nB / 256);
		
		CBrush br(cr);
		CBrush* pbrOld = pDC->SelectObject(&br);
		
		pDC->Rectangle(pRect->left, nTop+1, pRect->right , nBottom);
		pDC->SelectObject(pbrOld);
		br.DeleteObject() ; 
		DeleteObject(pbrOld)  ; 
		pbrOld =NULL ; 
		
		
		nBottom = nTop ; 
		
	}
	pDC->SelectObject(hpen)  ; 
	DeleteObject(hpen)  ; 
	hpen = NULL ; 
}

⌨️ 快捷键说明

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