📄 pageimport.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 + -