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

📄 operatview.cpp

📁 远程视频监控系统最新程序代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			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 + -