wincomm.cpp

来自「这是一个在正实际应用当中运行的电力监控系统软件源代码」· C++ 代码 · 共 1,963 行 · 第 1/5 页

CPP
1,963
字号
	char Str1[20];
//    sprintf(text, "%05.2fMW ", 28.12);
//TZC
              int ycv;
              WORD wycv = (WORD)GetValue(YCDB, TotalStaNum-1, 0);
              if (wycv&0x8000)
                 {
                  wycv &= 0x7fff;     ycv = wycv*(-1);
                 }
                else ycv = wycv;
              int ycp = GetPoint(YCDB, TotalStaNum-1, 0) & 3;
              float coe=1.0;  for (int j=0; j<ycp; j++)  coe *= 0.1;
  	sprintf(Str1, "%s%df MW", "%.", ycp);
	sprintf(text, Str1, (float)(ycv*coe));
    SetBkColor (DC, StatusLineC[0]);
	SetTextColor (DC, RGB(255, 255, 255));
    TextOut (DC, r.left+20, r.top, text, lstrlen(text));

    r.left += StatusBarW[0]+3;
              wycv = (WORD)GetValue(YCDB, TotalStaNum-1, 1);
              if (wycv&0x8000)
                 {
                  wycv &= 0x7fff;     ycv = wycv*(-1);
                 }
                else ycv = wycv;
              ycp = GetPoint(YCDB, TotalStaNum-1, 0) & 3;
              coe=1.0;  for (j=0; j<ycp; j++)  coe *= 0.1;
//              coe*=GetCoe(YCDB, TotalStaNum-1, 0);

//    sprintf(text, "%05.2fMVar ", 12.56);
	sprintf(Str1, "%s%df Mvar", "%.", ycp);
	sprintf(text, Str1,(float)(ycv*coe));
    SetBkColor (DC, StatusLineC[1]);
	TextOut (DC, r.left+16, r.top, text, lstrlen(text));
//TZC
    r.left += StatusBarW[1]+3;
    sprintf(text, "%05.2fHZ ", (float)Freq/100.0);
    SetBkColor (DC, StatusLineC[2]);
    TextOut (DC, r.left+12, r.top, text, lstrlen(text));

    _dos_getdate(&d);
    _dos_gettime(&t);
    r.left += StatusBarW[2]+3;
//    wsprintf(text, "%04d年%02d月%02d日  星期%s    %d          %02d时%02d分%02d秒",
//	     d.year, d.month, d.day, myweek[d.dayofweek],cnt5, t.hour, t.minute, t.second);
	wsprintf(text, "%04d年%02d月%02d日  星期%s               %02d时%02d分%02d秒",
		 d.year, d.month, d.day, myweek[d.dayofweek], t.hour, t.minute, t.second);
/*
 struct date D;
 struct time T;
 getdate (&D);
 gettime (&T);
 DWORD times=calsec(D,T);
 Group TT=Current(times);
 wsprintf (text,"%d年%d月%d日  %d时%d%d分%d%d秒  倒计数:%ld",TT.year,TT.month,TT.day,TT.hour,TT.min/10,TT.min%10,TT.sec/10,TT.sec%10,times);
*/

//    wsprintf (text,"%lx   %lu   %d   %lu   %8d",times,times,365*24*3600,365*24*3600,31536000);
//    sprintf (text,"%ld",times);

    SetBkColor (DC, StatusLineC[3]);
    TextOut (DC, r.left+10, r.top, text, lstrlen(text));

    r.left += StatusBarW[3]+3;
    if (ThisNodeName==MainFertName)
        wsprintf(text, "通信处理机%c(主)",ThisNodeName);
    else wsprintf(text, "通信处理机%c(辅)",ThisNodeName);
//    SetBkColor (DC, StatusLineC[4]);
    SetBkColor (DC, RGB(0,128,64));
	SetTextColor(DC, RGB(255,0,0)); //tzc
	if (OdsFlag!=0 && ThisNodeName==MainFertName)
		{
			wsprintf (text,"远程维护进行中");
			SetTextColor(DC, RGB(255,255,0));
		} 

	if (ThisNodeName!=MainFertName)
//        SetTextColor(DC, RGB(128,128,128));
        SetTextColor(DC, RGB(0,0,0));

	TextOut (DC, r.left+1, r.top, text, lstrlen(text));
	ReleaseDC (hMainWindow, DC);
}

//---------------------------------------------------------------------------------
NodeStatusWindow::NodeStatusWindow (PTWindowsObject AParent, LPSTR ATitle)
                : TWindow (AParent, ATitle)
{
    Attr.X = 0;
    Attr.Y = 0;
    Attr.W = CXScreen;
    Attr.H = CYScreen;
    Attr.Style = WS_POPUP | WS_VISIBLE;
    hMan1 = LoadBitmap (GetApplication()->hInstance,"man1");
    hMan2 = LoadBitmap (GetApplication()->hInstance,"man2");
	hMan3 = LoadBitmap (GetApplication()->hInstance,"man3");
    hNull16 = LoadBitmap (GetApplication()->hInstance,"null16");
    hNull32 = LoadBitmap (GetApplication()->hInstance,"null32");
    hMainf = LoadBitmap (GetApplication()->hInstance,"mainf");
	if (CXScreen == 800) {
//	  hPz = LoadBitmap (GetApplication()->hInstance,"back8_6");
	  ResolutionMode = 1; 
      new TButton(this, ID_WPAINT, "绘图包",     700,370,100, 30, FALSE);
      new TButton(this, ID_DM,     "数据库管理", 700,410,100, 30, FALSE);
      new TButton(this, ID_MMI,    "调度员",     700,450, 100, 30, FALSE);
      new TButton(this, ID_TABLE,  "报表",       700,490, 100, 30, FALSE);
      new TButton(this, ID_EXITSS,   "退出此界面",700,530, 100, 30, FALSE);
	}
	else if (CXScreen == 1024) {  //   && CYScreen == 768) {
//	  hPz = LoadBitmap (GetApplication()->hInstance,"back10_7");
//      hPz=0;
	  ResolutionMode = 2;
      new TButton(this, ID_WPAINT, "绘图包",     450, 698,100, 30, FALSE);
      new TButton(this, ID_DM,     "数据库管理", 550, 698,100, 30, FALSE);
      new TButton(this, ID_MMI,    "调度员",     650, 698, 100, 30, FALSE);
      new TButton(this, ID_TABLE,  "报表",       750, 698, 100, 30, FALSE);
      new TButton(this, ID_EXITSS,   "退出此界面", 850, 698, 100, 30, FALSE);
    }
	else if (CXScreen == 640)  {  //  && CYScreen == 480) {
//	  hPz = LoadBitmap (GetApplication()->hInstance,"back6_4");
	  ResolutionMode = 0;
      new TButton(this, ID_WPAINT, "绘图包",     540,290,100, 30, FALSE);
      new TButton(this, ID_DM,     "数据库管理", 540,330,100, 30, FALSE);
      new TButton(this, ID_MMI,    "调度员",     540,360,100, 30, FALSE);
      new TButton(this, ID_TABLE,  "报表",       540,390,100, 30, FALSE);
      new TButton(this, ID_EXITSS,   "退出此界面",540,420,100, 30, FALSE);
    }
	else { hPz = 0; };

}

NodeStatusWindow::~NodeStatusWindow ()
{
  KillTimer (HWindow, 1);

  if (hMan1) DeleteObject (hMan1);
  if (hMan2) DeleteObject (hMan2);
  if (hMan3) DeleteObject (hMan3);
  if (hPz)   DeleteObject (hPz);
  if (hNull16) DeleteObject (hNull16);
  if (hNull32) DeleteObject (hNull32);
  if (hMainf)  DeleteObject (hMainf);
  pStatusWin=0;
}

void NodeStatusWindow::SetupWindow ()
{
    TWindow::SetupWindow ();
    hNodeWnd=HWindow;
    SetTimer (HWindow,1,500U,NULL);
}

void NodeStatusWindow::GetWindowClass (WNDCLASS _FAR & AWndClass)
{
    TWindow::GetWindowClass (AWndClass);
    AWndClass.style |= CS_DBLCLKS;
}                                                   

void NodeStatusWindow::WMLButtonDblClk (RTMessage)
{
}
void NodeStatusWindow::WMRButtonDblClk (RTMessage)
{
   PostMessage (HWindow,WM_CLOSE,0,0l);
}
POINT HostAPos[3]= { {190,94}, {190,94},{190,94} };
POINT FertAPos[3]= { {190,304},{190,304},{190,304} };
POINT RTUAPos[3] = { {104,419},{104,419},{104,419} };
POINT RTUIPos[3] = { {104,480},{104,480},{104,480} };
void NodeStatusWindow::WMTimer (RTMessage msg)
{
    char buf[50], buf1[50], buf2[60];
    POINT HZPos[3]   ={ {77 ,455},  {77,548},{77,705}};
    POINT SumPos[3]  ={ {194,455}, {180,548},{194,705}};
    POINT TimePos[3] ={ {277,455}, {277,548},{277,705}};
    struct time tim;
    struct date dat;
    static int Off = 0, TimerFlag = 0;
    PostMessage (HWindow,WM_CLOSE,0,0l);//tzc
    return;
    if (msg.WParam == 1) {
        HDC PaintDC=GetDC (HWindow);
        HDC hMemDC=CreateCompatibleDC (PaintDC);

        if (TimerFlag == 0) {
            SetBkColor (PaintDC, RGB (192,192,192));
//	        float f= Addr->SysPara_addr->GetSysFrq()/100.0;
            sprintf (buf, "%05.2f  ",Freq);
//            f=GetAYC (RTUMAXNUM-1, 0, PYC);
//            sprintf (buf1, "%05.2f  ", f);
            getdate (&dat); gettime(&tim);
            wsprintf (buf2, "%04d-%02d-%02d %02d:%02d:%02d  ", dat.da_year,dat.da_mon,dat.da_day,tim.ti_hour, tim.ti_min, tim.ti_sec);

            SetTextColor (PaintDC, RGB(128,128,128));
	        TextOut (PaintDC,HZPos[ResolutionMode].x,HZPos[ResolutionMode].y,buf,strlen(buf));
	        TextOut (PaintDC,SumPos[ResolutionMode].x,SumPos[ResolutionMode].y,buf1,strlen(buf1));
	        TextOut (PaintDC,TimePos[ResolutionMode].x,TimePos[ResolutionMode].y,buf2,strlen(buf2));

	        int OldMode = SetBkMode (PaintDC, TRANSPARENT);
            SetTextColor (PaintDC, RGB(255,255,255));
	        TextOut (PaintDC,HZPos[ResolutionMode].x+2,HZPos[ResolutionMode].y+2,buf,strlen(buf));
	        TextOut (PaintDC,SumPos[ResolutionMode].x+2,SumPos[ResolutionMode].y+2,buf1,strlen(buf1));
	        TextOut (PaintDC,TimePos[ResolutionMode].x+2,TimePos[ResolutionMode].y+2,buf2,strlen(buf2));

            SetTextColor (PaintDC, RGB(0,0,0));
	        TextOut (PaintDC,HZPos[ResolutionMode].x+1,HZPos[ResolutionMode].y+1,buf,strlen(buf));
	        TextOut (PaintDC,SumPos[ResolutionMode].x+1,SumPos[ResolutionMode].y+1,buf1,strlen(buf1));
	        TextOut (PaintDC,TimePos[ResolutionMode].x+1,TimePos[ResolutionMode].y+1,buf2,strlen(buf2));

	        SetBkMode (PaintDC, OldMode);
            TimerFlag = 1;
        }
        else TimerFlag = 0;

/*		if(scadainf.NetAdapter && RTUMAXNUM>=2)
		{
		  HBITMAP hOldBmp;
		  for (int i=1;i<=7;i++) {
			  if (HostNode[i-1].Use==TRUE) {
				  switch ((StatusCount+i)%3) {
					  case 0: hOldBmp = (HBITMAP)SelectObject (hMemDC,hMan1);
							  break;
					  case 1: hOldBmp = (HBITMAP)SelectObject (hMemDC,hMan2);
							  break;
					  case 2: hOldBmp = (HBITMAP)SelectObject (hMemDC,hMan3);
							  break;
				  }
			  }
			  else  hOldBmp = (HBITMAP)SelectObject (hMemDC,hNull32);
			  BitBlt (PaintDC, HostAPos[ResolutionMode].x+(i-1)*50, HostAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);

			  if ((i-1)<BACKHOSTNODEMAXNUM && HostNode[i-1].NodeState=='M') SelectObject (hMemDC,hMainf);
			  else SelectObject (hMemDC,hNull16);
			  BitBlt (PaintDC, HostAPos[ResolutionMode].x+(i-1)*50-16, HostAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
		  }
		  for (i=8;i<=HOSTNODEMAXNUM;i++) {
			if (HostNode[i-1].Use==TRUE) {
			  switch ((StatusCount+i)%3) {
				case 0: SelectObject (hMemDC,hMan1);
						break;
				case 1: SelectObject (hMemDC,hMan2);
						break;
				case 2: SelectObject (hMemDC,hMan3);
						break;
			  }               TotalStaNum
			}
			else  SelectObject (hMemDC,hNull32);
			BitBlt (PaintDC, FertAPos[ResolutionMode].x+100+(i-7)*50, FertAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);

			if ((i-1)<BACKHOSTNODEMAXNUM && HostNode[i-1].NodeState=='M') {
			  SelectObject (hMemDC,hMainf);
			  BitBlt (PaintDC, FertAPos[ResolutionMode].x+100+(i-7)*50-16, FertAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
			}
			else {
			  SelectObject (hMemDC,hNull16);
			  BitBlt (PaintDC, FertAPos[ResolutionMode].x+100+(i-7)*50-16, FertAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
			}
		  }
		  for (i=1;i<=FERTNODEMAXNUM;i++) {
			if (FertNode[i-1].Use==TRUE) {
			  switch ((StatusCount+i)%3) {
				case 0: SelectObject (hMemDC,hMan1);
						break;
				case 1: SelectObject (hMemDC,hMan2);
						break;
				case 2: SelectObject (hMemDC,hMan3);
						break;
			  }
			}
			else  SelectObject (hMemDC, hNull32);
			BitBlt (PaintDC, FertAPos[ResolutionMode].x+(i-1)*50, FertAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);

			if (FertNode[i-1].NodeState=='M') SelectObject (hMemDC,hMainf);
			else  SelectObject (hMemDC,hNull16);
			BitBlt (PaintDC, FertAPos[ResolutionMode].x+(i-1)*50-16, FertAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
		  }

		  for (i=0;i<20;i++) {
			RTUPARA _FAR *pRTU;
			pRTU=Addr->RTUPara_addr+i;
			if (pRTU->GetUseFlag() && pRTU->GetStatus() &&
			   (FertNode[0].Use==TRUE || FertNode[1].Use==TRUE)) {
			  switch ((StatusCount+i)%3) {
				case 0: SelectObject (hMemDC,hMan1);
						break;
				case 1: SelectObject (hMemDC,hMan2);
						break;
				case 2: SelectObject (hMemDC,hMan3);
						break;
			  }
			  if (i<10)
				 BitBlt (PaintDC, RTUAPos[ResolutionMode].x+(i%10)*40, RTUAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
			  else
				 BitBlt (PaintDC, RTUIPos[ResolutionMode].x+(i%10)*40, RTUIPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
			}
			else {
			  SelectObject (hMemDC,hNull32);
			  if (i<10)
				 BitBlt (PaintDC, RTUAPos[ResolutionMode].x+(i%10)*40, RTUAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
			  else
				 BitBlt (PaintDC, RTUIPos[ResolutionMode].x+(i%10)*40, RTUIPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
			}
		  }
		  if (StatusCount >= 2) StatusCount=0;
		  else                  StatusCount++;
		  SelectObject (hMemDC, hOldBmp);

		  if (ResolutionMode < 3) {
			  SetBkColor (PaintDC, RGB (192,192,192));
			  int FlowStartPos[3]  = {100, 120, 120};
			  int FlowWidth[3] = {40, 40, 40};
			  int FlowStartY[3] = {420, 420, 420};
			  int FlowEndY[3] = {384, 384, 384};

			  HPEN hOP = (HPEN)SelectObject (PaintDC, CreatePen (PS_DOT, 1, RGB(250,0,0)));
			  int x;
			  for (i=0; i<10; i++) {
				  x = FlowStartPos[ResolutionMode] + i*FlowWidth[ResolutionMode];
				  MoveTo (PaintDC, x, FlowStartY[ResolutionMode]-Off);
				  LineTo (PaintDC, x, FlowEndY[ResolutionMode]);
			  }

			  switch (ResolutionMode) {
				  case 0:
				  case 1:
				  case 2:
					  MoveTo (PaintDC, 120+Off, 384);  LineTo (PaintDC, 230, 384);
					  MoveTo (PaintDC, x-Off, 384);  LineTo (PaintDC, 230, 384);

					  MoveTo (PaintDC, 230, 384-Off);  LineTo (PaintDC, 230, 359);

					  MoveTo (PaintDC, 230-Off, 359);  LineTo (PaintDC, 206, 359);
					  MoveTo (PaintDC, 230+Off, 359);  LineTo (PaintDC, 255, 359);

					  MoveTo (PaintDC, 206, 359-Off);  LineTo (PaintDC, 206, 336);
					  MoveTo (PaintDC, 255, 359-Off);  LineTo (PaintDC, 255, 336);

					  MoveTo (PaintDC, 205, 303-Off);  LineTo (PaintDC, 205, 276);
					  MoveTo (PaintDC, 208, 276+Off);  LineTo (PaintDC, 208, 303);

					  MoveTo (PaintDC, 253, 303-Off);  LineTo (PaintDC, 253, 276);
					  MoveTo (PaintDC, 256, 276+Off);  LineTo (PaintDC, 256, 303);
					  break;
			  }
			  DeleteObject (SelectObject(PaintDC, hOP));
		  }
		}     //RTUMAXNUM>1 and Net Exist
		else if(scadainf.RS232Comm)
		{

        }
        ReleaseDC (HWindow,PaintDC);
		DeleteDC (hMemDC);            */
	}
    Off++;
    Off %= 7;
}

void NodeStatusWindow::WMShowWindow (RTMessage Msg)
{
   if (Msg.LParam != SW_PARENTCLOSING)   DefWndProc (Msg);
}

void NodeStatusWindow::Paint (HDC PaintDC, PAINTSTRUCT&)
{
    HDC hMemDC=CreateCompatibleDC (PaintDC);

//	if (CXScreen == 800) 
       DispDIBitmap (PaintDC, 0, 0, "c:\\out\\back8_6.bmp");
//	else if (CXScreen == 1024)
//       DispDIBitmap (PaintDC, 0, 0, "c:\\ods\\back10_7.bmp");
//	else if (CXScreen == 640) 
//       DispDIBitmap (PaintDC, 0, 0, "c:\\ods\\back6_4.bmp");
/*    if(scadainf.NetAdapter && RTUMAXNUM>1) {
	  for (int i=1;i<=7;i++) {
	   if (HostNode[i-1].Use==TRUE) {
		 switch ((StatusCount+i)%3) {
		   case 0: SelectObject (hMemDC,hMan1);
				   break;
		   case 1: SelectObject (hMemDC,hMan2);
				   break;
		   case 2: SelectObject (hMemDC,hMan3);
				   break;
		 }
		 BitBlt (PaintDC, HostAPos[ResolutionMode].x+(i-1)*50, HostAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
	   }
	 }
	 for (i=8;i<=HOSTNODEMAXNUM;i++) {
	   if (HostNode[i-1].Use==TRUE) {
		 switch ((StatusCount+i)%3) {
		   case 0: SelectObject (hMemD

⌨️ 快捷键说明

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