📄 operatview.cpp
字号:
break;
case 3://Curve
pMemDC = new CDC;
pMemDC->CreateCompatibleDC(&dc);
oldBitmap=pMemDC->SelectObject(&lBitmap);
dc.BitBlt(0,data_y0,m_xW,m_yH-data_y0-key_y0,pMemDC,0,0,SRCCOPY);
pMemDC->SelectObject(oldBitmap);
delete pMemDC;
GetClientRect(&nRect);
xW = nRect.right, yH = nRect.bottom;
nRect.SetRect( 0,yH-key_y0, xW, yH-prompt_y0);
nHistoryData.DrawCurveMenu(pDC,(CWnd*)this,nRect,m_Button,m_Button_ID);
break;
case 4: //switch
Def_Draw_SwitchStaticData(pDC);
Def_Draw_SwitchDynamicData(pDC);
DrawPlateMenu(pDC);
break;
case 5: // Flow chart
Def_DrawStaticFlowChart(pDC,subCurve0);
Def_DrawDynamicFlowChart(pDC,subCurve0);
// subCurve0=0;
DrawPlateMenu(pDC);
break;
default:
break;
}
DrawPrompt(pDC);
}
void COperatView::DrawFormFace(CDC* pDC)
{
Def_Draw_AnavalGrid(pDC);
Def_Draw_AnavalStaticData(pDC);
Def_Draw_AnavalDynamicData(pDC);
}
void COperatView::DrawPlateFace(CDC* pDC){
Def_Draw_PlateStaticData(pDC);
Def_Draw_PlateDynamicData(pDC);
}
void COperatView::DrawPlateMenu(CDC* pDC)
{
CRect crect[20],tool,client,indicate;
GetClientRect(&client);
int xW = client.right,yH = client.bottom;
pDC->SelectStockObject(NULL_PEN);
CBrush *brush=new CBrush(RGB(200,200,200));
CBrush *oldbrush=pDC->SelectObject(brush);
tool.SetRect( 0,yH-key_y0, xW, yH-prompt_y0);
pDC->Rectangle(&tool);
pDC->SelectObject(oldbrush);
delete brush;
FILE *stream;
char cMenu[MAXGROUPNUM+2][16];
int i=0;
if(menuNums>MAXGROUPNUM+2) menuNums=MAXGROUPNUM+2;
int menuNum = menuNums;
for( i=0;i<menuNum;i++)
{
if(i<(menuNum-1)) sprintf(cMenu[i],"%-3d页",i+1);
if(i==(menuNum-1)) sprintf(cMenu[i],"退 出");
if (m_Button[i].GetSafeHwnd()!=NULL)
{
if (i==curIndicate) m_Button[i].SetState(3);
continue;
}
m_Rect[i].SetRect( (xW/(menuNum+1))*i+(xW/(menuNum+1))/menuNum*i+3,tool.top+3, xW/(menuNum+1)+(xW/(menuNum+1))/menuNum*i-1+i*(xW/(menuNum+1)),tool.bottom-3 );
m_Button[i].Create(cMenu[i],BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_BORDER,m_Rect[i],this,m_Button_ID[i]);
// m_Button[i].SetState(3);
}
}
void COperatView::DrawMenu(CDC* pDC)
{
CRect tool,client,indicate;
GetClientRect(&client);
int xW = client.right,yH = client.bottom;
sprintf(fieldName," 主 画 面 显 示");
if (Glob_CurError_Adr>0)sprintf(fieldName,"#%d前置机出错 ",Glob_CurError_Adr);
pDC->SelectStockObject(NULL_PEN);
CBrush *brush=new CBrush(RGB(200,200,190));
CBrush *oldbrush=pDC->SelectObject(brush);
tool.SetRect( 0,yH-key_y0, xW, yH-prompt_y0 );
pDC->Rectangle(&tool);
pDC->SelectObject(oldbrush);
delete brush;
menuNums = MAIN_MENU_COUNT;
char sTitle[MAX_PAGE_NUM][40]={"表 盘 显 示","表 格 显 示","曲 线 显 示","投 入 显 示","流程图显示"};
int i=1,menuNum = menuNums;
if (m_nCurSystem==0)
{
strcpy(sTitle[5],"发电机系统");
for(i=0;i<menuNum;i++)
{
if (m_Button[i].GetSafeHwnd()!=NULL) continue;
m_Rect[i].SetRect((xW/(menuNum+1))*i+(xW/(menuNum+1))/menuNum*i+10,tool.top+3, xW/(menuNum+1)+(xW/(menuNum+1))/menuNum*i-20+i*(xW/(menuNum+1)),tool.bottom-3 );
m_Button[i].Create(sTitle[i],BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_BORDER,m_Rect[i],this,m_Button_ID[i]);
//m_Button[i].SetState(3);
}
}
else
{
menuNum=4;
strcpy(sTitle[5],"汽机系统");
for(i=0;i<3;i++)
{
if (m_Button[i].GetSafeHwnd()!=NULL) continue;
m_Rect[i].SetRect((xW/(menuNum+1))*i+(xW/(menuNum+1))/menuNum*i+10,tool.top+3, xW/(menuNum+1)+(xW/(menuNum+1))/menuNum*i-20+i*(xW/(menuNum+1)),tool.bottom-3 );
m_Button[i].Create(sTitle[i],BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_BORDER,m_Rect[i],this,m_Button_ID[i]);
}
if (m_Button[5].GetSafeHwnd()==NULL)
{
m_Rect[5].SetRect((xW/(menuNum+1))*3+(xW/(menuNum+1))/menuNum*3+10,tool.top+3, xW/(menuNum+1)+(xW/(menuNum+1))/menuNum*3-20+3*(xW/(menuNum+1)),tool.bottom-3 );
m_Button[5].Create(sTitle[5],BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_BORDER,m_Rect[5],this,m_Button_ID[5]);
}
}
//for(i=0;i<MAX_PAGE_NUM;i++) if (m_Button[i].GetSafeHwnd()!=NULL) m_Button[i].DestroyWindow();
}
/////////////////////////////////////////////////////////////////////////////
// COperatView printing
BOOL COperatView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void COperatView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void COperatView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// COperatView diagnostics
#ifdef _DEBUG
void COperatView::AssertValid() const
{
CView::AssertValid();
}
void COperatView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
COperatDoc* COperatView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COperatDoc)));
return (COperatDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// COperatView message handlers
void COperatView::OnRButtonDown(UINT nFlags, CPoint point)
{
/*
char nStr[32];
sprintf(nStr,"x=%d y=%d",point.x,point.y);
AfxMessageBox(nStr);
*/
CView::OnRButtonDown(nFlags, point);
}
void COperatView::OnLButtonUp(UINT nFlags, CPoint point)
{
CView::OnLButtonUp(nFlags, point);
}
void COperatView::DrawAlram(CDC* pDC)
{
CRect alrm;
short add,ch,i,cnt;
char szbuf[80];
COLORREF preColor;
CBrush *brush=new CBrush(RGB(200,240,200));
CBrush *oldbrush=pDC->SelectObject(brush);
alrm.SetRect( 0,0, m_xW, data_y0 );
pDC->Rectangle(&alrm);
pDC->SelectObject(oldbrush);
delete brush;
CPen *oldpen=pDC->SelectObject(&grayPen230);
pDC->MoveTo(0,data_y0-3); pDC->LineTo(m_xW,data_y0-3);
pDC->SelectObject(oldpen);
oldpen=pDC->SelectObject(&grayPen120);
pDC->MoveTo(0,data_y0-1); pDC->LineTo(m_xW,data_y0-1);
pDC->SelectObject(oldpen);
////////////////////
/////////////////////////////////
if(alrmDisp!=0){
COLORREF oldBack=pDC->SetBkColor(RGB(200,240,200));
if((alrmDisp==alrmDisp1)&&(alrmDisp1>100)) cnt=1;
else {
if((alrmDisp!=alrmDisp1)&&(alrmDisp1>100)&&(alrmDisp>100)) cnt=2;
else cnt = 0;
}
for(i=0;i<cnt;i++){
add=alrmDisp1/100; ch=alrmDisp1%100;
if(i==1) {add=alrmDisp/100; ch=alrmDisp%100;}
aps = aps1+add*(MAX_CHNUM+1)+ch;
code_name_tab = code_name_tab1+add*(MAX_CHNUM+1)+ch;
if(aps->alrmSt<1) continue;
if(aps->alrmSt>1)
preColor=pDC->SetTextColor(RGB(255,0,0));
// if((aps->psNo<=0)||(aps->psNo>(MAX_ADNUM+1)*(MAX_CHNUM+1))) return;
float temp;
if (strstr(m_sPointCode,aps->psCode)!=NULL)
{
temp=-aps->anaVal;
}
else
{
temp=aps->anaVal;
}
if(aps->anaVal>aps->alrmHl)
sprintf(szbuf,"%s(%7.2f) > %7.2f%s",code_name_tab->psName,temp,aps->alrmHl,aps->sysUnit);
else
sprintf(szbuf,"%s(%7.2f) < %7.2f%s",code_name_tab->psName,temp,aps->alrmLl,aps->sysUnit);
if(i==0)
pDC->TextOut(alrm.left+160,alrm.top+15,szbuf);
else
pDC->TextOut(alrm.left+160,alrm.top+40,szbuf);
if(aps->alrmSt>1) pDC->SetTextColor(preColor);
}
pDC->SetBkColor(oldBack);
}
}
void COperatView::DrawPrompt(CDC * pDC)
{
CRect prompt,client;
GetClientRect(&client);
int xW = client.right,yH = client.bottom;
CBrush *brush=new CBrush(RGB(210,210,210));
CBrush *oldbrush=pDC->SelectObject(brush);
prompt.SetRect( 0,yH-prompt_y0, xW, yH );
pDC->SelectStockObject(NULL_PEN);
pDC->Rectangle(&prompt);
pDC->SelectObject(oldbrush);
delete brush;
COLORREF preColor=pDC->SetBkColor(RGB(210,210,210));
COLORREF preTextColor;
pDC->TextOut(40,prompt.top+1 ,"");
if (Glob_CurError_Adr>0)
{
preTextColor=pDC->SetTextColor(RGB(255,0,0));
pDC->TextOut(300,prompt.top+1 ,fieldName);
pDC->SetTextColor(preTextColor);
}
else
{
pDC->TextOut(300,prompt.top+1 ,fieldName);
}
CTime tt;
short year,mon,day,hour,minu,sec;
char sztime[40];
tt=CTime::GetCurrentTime();
year = tt.GetYear();
mon = tt.GetMonth(); //1-12
day = tt.GetDay(); //1-31
hour = tt.GetHour(); //0-23
minu = tt.GetMinute(); //0-59
sec = tt.GetSecond(); //0-59
sprintf(sztime,"%4d年%02d月%02d日 %02d时%02d分%02d秒",year ,mon,day,hour,minu,sec);
pDC->TextOut(570,prompt.top+3,sztime);
if (m_nCurSystem==0) pDC->TextOut(10,prompt.top+3,"汽机系统");
else pDC->TextOut(10,prompt.top+3,"发电机系统");
pDC->SetBkColor(preColor);
}
int COperatView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//在构造函数中分配内存,在ONCREATE中初始化
SetTimer(1, 600, NULL);
SetTimer(2, 3000, NULL);//分时历史数据
// SetTimer(3, (2*60+24)*1000, NULL);//24小时历史数据
// SetTimer(4, 3*1000, NULL);//定时数据处理
SetTimer(5, 120*1000, NULL);//报警
SetTimer(12,3000,NULL);//数据采集
SetTimer(13,1510,NULL);//快速点
SetTimer(15,3000,NULL);//计算点
// SetTimer(16,500,NULL);
blackPen2.CreatePen(PS_SOLID,2,RGB(0,0,0));
whitePen2.CreatePen(PS_SOLID,2,RGB(255,255,255));
dotPen.CreatePen(PS_DOT,2,RGB(0,0,0));
grayPen230.CreatePen(PS_SOLID,2,RGB(230,230,230));
grayPen120.CreatePen(PS_SOLID,2,RGB(120,120,120));
return 0;
}
void COperatView::OnTimer(UINT nIDEvent)
{
APS *aps2;
float temp;
int i;
short add,ch,k,k0,j,jj,cnt=0,chNum=20,IsPtAlrm=0;
CTime tt;
char sztime[64];
COLORREF preColor,preTextColor;
CFdcsData fdcs_data;
CHistoryData nHistoryData;
CDC *pDC;
switch(nIDEvent){
case 1:
pDC=GetDC();
tt=CTime::GetCurrentTime();
// lxl add in 2000-4-18 begin
preColor=pDC->SetBkColor(RGB(210,210,210));
sprintf(sztime,"%4d年%02d月%02d日 %02d时%02d分%02d秒",tt.GetYear() ,tt.GetMonth()
,tt.GetDay(),tt.GetHour(),tt.GetMinute(),tt.GetSecond());
pDC->TextOut(570,m_yH-prompt_y0+3,sztime);
pDC->SetBkColor(preColor);
i=tt.GetHour();
if ((i%24)==1)
{
i=tt.GetMinute();
if (i==45)
{
i=tt.GetSecond();
if (i==50)
{
Def_SetSystemTime();
}
}
}
switch(subFace){
case 0://Main
break;
case 1://subFace=Plate
Def_Draw_PlateDynamicData(pDC);
break;
case 2://Form
Def_Draw_AnavalDynamicData(pDC);
break;
case 4://Switch
Def_Draw_SwitchDynamicData(pDC);
break;
case 5://Flow Chart
Def_DrawDynamicFlowChart(pDC,subCurve0);
break;
default:
break;
}
ReleaseDC(pDC);
break;
case 2://分时历史数据
m_Data_Get.TimingData();
nHistoryData.IncrementHistData();
m_nHistTimeCout++;
m_nHistTimeCout%=200;
if (m_nHistTimeCout==199) nHistoryData.SaveHistData();
break;
case 3://24小时历史数据
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -