wincomm.cpp

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

CPP
1,963
字号
 		  struct dostime_t Time;
  		  _dos_gettime(&Time);
		  
		  if ((Time.minute%10==3) && (Time.second<=20) )
			 {
				  if(AdjustT==0)
                  {
		           AdjustT=1;
                   FrameFlag[SST]=TRUE;
                   //PostMessage (HWindow, WM_ADJUSTCLOCK, 0, 0L);
                   AdjClkF=1;
                  }
             }
			else
            AdjustT=0;
		  if(AdjClkF==1)
		  {
           AdjClkF=0;
		   BYTE wp;
 
       if (ThisNodeName == MainFertName)
         {
         for (int i=0; i<TotalStaNum; i++)
           {
             wp = (lpStaParam+i)->DownCmdWP;
             if (((wp+1)&3) != (lpStaParam+i)->DownCmdRP)
              {
              (lpStaParam+i)->DownCmd[wp].Cmd[0] = DCMDSST;
              (lpStaParam+i)->DownCmd[wp].Cmd[1] = i%256;  //rtu号
			  (lpStaParam+i)->DownCmd[wp].Cmd[2] = i/256;  //rtu号
              (lpStaParam+i)->DownCmdWP = (wp+1)&3;
              } 
           }
          }

         }
		  break;
	 case 2:  // 55 Ms Timer   启动网络发送和接收
             {
//    		  SendMessage (hMainWindow, WM_SENDDATA, 0, 0L);
//			  SendMessage (hMainWindow, WM_RXDATA, 0, 0L);
			  NetTestCount +=5;
//			  if (NetTestFlag && NetTestCount<6) MessageBeep(0);
    		  PostMessage (hMainWindow, WM_SENDDATA, 0, 0L);
			  PostMessage (hMainWindow, WM_RXDATA, 0, 0L);
			 }
          break;
     case 3:
          SendFlag ();
          ChkChStatus();
		  break;
     case 4:
		 ZfProc();
         break;
     case      5:
// jgx			   PostMessage(hMainWindow, WM_COMMAND, 555, 0L);
               break;
    }
}

void TMainWindow::WMSize(RTMessage msg)
{
  int ClientWidth,ClientHeight,xClient,yClient;
  int FrameWidth = LOWORD(msg.LParam); 
  int FrameHeight = HIWORD(msg.LParam);
  if (FrameHeight>=28)
     {
      MRect.left =0;
      MRect.top = FrameHeight-28;
      MRect.right = FrameWidth; 
      MRect.bottom = FrameHeight;
      ClientWidth=FrameWidth;
      ClientHeight=FrameHeight-28;
      xClient =0; yClient =0; 
      MoveWindow(ClientWnd->HWindow,xClient,yClient,ClientWidth,ClientHeight,TRUE);
     }
}

void TMainWindow::InitClientWindow ()
{
    ClientWnd = new TMDIClient (this);
}

void TMainWindow::CMSystemCfg(RTMessage)
{
   BYTE tmp = syscfg->GetNode();
   BYTE tmp1=syscfg->GetNetProto();
   GetApplication()->ExecDialog(new TSystemCfgDialog(this));
   if (syscfg->GetNode()!=tmp)
      {
       CancelNode ('A'+tmp);
      }
   //wyy++ for tcp_ip protocl
   if (syscfg->GetNetProto()!=tmp1) {
       if(syscfg->GetNetProto()==0){
         if(pTcpWin->HWindow!=NULL)
             SendMessage(pTcpWin->HWindow,WM_CLOSE,0,0L);

         DeletClientName ();
         if (!AddClientName ())
              MessageBox (HWindow, "Add Client Name Error!", "Netbios", MB_ICONEXCLAMATION | MB_OK);
         else
           {
            for (int i=0; i<6; i++)  RcvDataGram (i);
           }
         if (ThisNodeName=='A')
           {
            SwitchToMain();
            SendFlag();
	       }
         }

         else if(syscfg->GetNetProto()==1){
           DeletClientName ();
           if(hTcpWin==NULL) {
               InitTcpWin(this);
               }

         if (ThisNodeName=='A')
           {
            SwitchToMain();
            SendFlag();
	       }

            }
   }
 //++wyy

}

void TMainWindow::CMSetTime(RTMessage)
{
//  SendMessage(HWND_BROADCAST, WM_COMMAND, WM_INITREALDB, 0l);
	FrameFlag[SST]=TRUE;
    AdjClkF=1;
    //PostMessage (HWindow, WM_ADJUSTCLOCK, 0, 0L);

}

void TMainWindow::CMCrtChild1(RTMessage)
{
     MakeChildWnd(RXBUFFWINDOW);
}

void TMainWindow::CMCrtChild2(RTMessage)
{
     MakeChildWnd(TXBUFFWINDOW);
}
/*
void TMainWindow::CMCrtChild3(RTMessage)
{
     MakeChildWnd(CHSTATUSWINDOW);
}
*/
void TMainWindow::CMCrtChild4(RTMessage)
{
     MakeChildWnd(REALYXWINDOW);
}

void TMainWindow::CMCrtChild5(RTMessage)
{
     MakeChildWnd(REALYCWINDOW);
}

void TMainWindow::CMCrtChild6(RTMessage)
{
     MakeChildWnd(REALKWHWINDOW);
}

void TMainWindow::CMCrtChild7(RTMessage)
{
     MakeChildWnd(EVENTWINDOW);
}

void TMainWindow::CMCrtChild8(RTMessage)
{
     MakeChildWnd(RECCMDWINDOW);
}
void TMainWindow::CMCrtChild9(RTMessage)
{
     MakeChildWnd(RECDATAWINDOW);
}
void TMainWindow::CMCrtChild10(RTMessage)
{
     MakeChildWnd(SENDCMDWINDOW);
}
void TMainWindow::CMCrtChild11(RTMessage)
{
     MakeChildWnd(SENDDATAWINDOW);
}

void TMainWindow::NetTest(RTMessage)
{
	NetTestFlag ^=0xff;
	if (NetTestFlag) CheckMenuItem (hMainMenu,151,MF_CHECKED);
	else CheckMenuItem (hMainMenu,151,MF_UNCHECKED);
}
void TMainWindow::OdsTest(RTMessage)
{
	OdsFlag^=0xff;
    if (OdsFlag) CheckMenuItem (hMainMenu,152,MF_CHECKED);
	else CheckMenuItem (hMainMenu,152,MF_UNCHECKED);
}
void TMainWindow::TczHelp(RTMessage)
{
	WinExec("winhlp32.exe c:\\tcz\\comm\\tzm.hlp",SW_RESTORE);
}

//About dialog box
void TMainWindow::CMAbout(RTMessage)
{
 GetApplication()->ExecDialog(new TAboutDlg(this));
}

void TMainWindow::CTKParam(RTMessage)
{
   CTKSIO FAR *lpctk = (CTKSIO FAR *)GlobalLock(hCTKSIOMem);
   lpChannelParam =(CHANNELPARAM FAR *) GlobalLock(hChannelParamMem);
   GetApplication()->ExecDialog(new TSetCTKParamDialog(this, lpctk));
   GlobalUnlock(hCTKSIOMem);
   GlobalUnlock(hChannelParamMem);
}


void TMainWindow::DecServerParam(RTMessage)
{
   GetApplication()->ExecDialog(new DecServerStatus(this));
}

void TMainWindow::MulTiCommParam(RTMessage)
{
   GetApplication()->ExecDialog(new CommStatus(this));
}

void TMainWindow::CHStatus(RTMessage)
{
   lpChannelParam =(CHANNELPARAM FAR *) GlobalLock(hChannelParamMem);
   GetApplication()->ExecDialog(new ChanelStatus(this));
   GlobalUnlock(hChannelParamMem);
}
void TMainWindow::CHParam(RTMessage)
{
   CTKSIO FAR *lpctk = (CTKSIO FAR *)GlobalLock(hCTKSIOMem);
   lpChannelParam =(CHANNELPARAM FAR *) GlobalLock(hChannelParamMem);
   GetApplication()->ExecDialog(new TChannelSetDialog(this));
   GlobalUnlock(hCTKSIOMem);
   GlobalUnlock(hChannelParamMem);
}

void TMainWindow::StaToChParam(RTMessage)
{
   lpStaParam = (STATIONPARAM FAR *)GlobalLock(hStaParamMem);
   GetApplication()->ExecDialog(new TStaToChDialog(this));
   GlobalUnlock(hStaParamMem);
}

void TMainWindow::EnterPass(RTMessage)
 {
 
   if(GetMenuState(hMenu,IDM_ENTERPASS,MF_BYCOMMAND)&MF_CHECKED)
      {
	  CheckMenuItem(hMenu,IDM_ENTERPASS,MF_BYCOMMAND|MF_UNCHECKED);
	  EnableMenuItem(hMenu,IDM_SYSPARA,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_ZFPARA,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_SYSTEMCFG,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_SETTIME,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_CTKBOARD,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_MULTISIO,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_OTHERSIO,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_CHANNELPARAM,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_STATOCHPARAM,MF_BYCOMMAND|MF_GRAYED);
	  EnableMenuItem(hMenu,IDM_MODIP,MF_BYCOMMAND|MF_GRAYED);
      }
      else
      {
       if(GetApplication()->ExecDialog(new TEnterPassDlg(this,ENTERP))==IDOK)
         if(strncmpi(Pass,Text,9)==0)
	     {
		  CheckMenuItem(hMenu,IDM_ENTERPASS,MF_BYCOMMAND|MF_CHECKED);
	     EnableMenuItem(hMenu,IDM_SYSPARA,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_ZFPARA,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_SYSTEMCFG,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_SETTIME,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_CTKBOARD,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_MULTISIO,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_OTHERSIO,MF_BYCOMMAND|MF_ENABLED);
	     EnableMenuItem(hMenu,IDM_CHANNELPARAM,MF_BYCOMMAND|MF_ENABLED);
		 EnableMenuItem(hMenu,IDM_STATOCHPARAM,MF_BYCOMMAND|MF_ENABLED);
		 EnableMenuItem(hMenu,IDM_MODIP,MF_BYCOMMAND|MF_ENABLED);
         }
      }
  }

void TMainWindow::ModiPass(RTMessage)
{
 
   
   if(GetApplication()->ExecDialog(new TModiPassDlg(this,MODIP))==IDOK)
   {
    lstrcpy(Pass,Text);
	HFILE hFile;
	OFSTRUCT ofstruct;
    if((hFile=OpenFile("c:\\tcz\\pass.dat",&ofstruct,OF_CREATE|OF_WRITE))!=HFILE_ERROR)
      {
	  _lwrite(hFile,Pass,9);
      _lclose(hFile);
      }
   }
}

/*
PTWindowsObject TMainWindow::InitChild()
{
    return new TMyChildWnd1(this, "子窗1"); 
}
*/
BOOL TMainWindow::MakeChildWnd(int WndType)
{
 char Text[40];
 int Flag=0;
 int CurrentCh=0, CurrentSta=0;

 switch (WndType)
   {
    case RXBUFFWINDOW:
         wsprintf (Text, "串行接收缓冲区", CurrentCh);
         break;
    case TXBUFFWINDOW:
         wsprintf (Text, "串行发送缓冲区", CurrentCh);
         break;
    case CHSTATUSWINDOW:
         strcpy (Text, "通道状态图");
         break;
    case REALYXWINDOW:
         wsprintf (Text, "实时遥信值", CurrentCh);
         break;
    case REALYCWINDOW:
         wsprintf (Text, "实时遥测值", CurrentCh);
         break;
    case REALKWHWINDOW:
         wsprintf (Text, "实时电度值", CurrentCh);
         break;
    case EVENTWINDOW:
         wsprintf (Text, "事项缓冲区");
         break;
    case RECCMDWINDOW:
         wsprintf (Text, "网络接收命令缓冲区");
         break;
    case RECDATAWINDOW:
         wsprintf (Text, "网络接收数据缓冲区");
         break;
    case SENDCMDWINDOW:
         wsprintf (Text, "网络发送命令缓冲区");
         break;
    case SENDDATAWINDOW:
         wsprintf (Text, "网络发送数据缓冲区");
         break;
   }

 if (MultiWindowFlag == 1)
    {
//     TMyChildWnd1 * TmpWindow;

     if (DispWindow[WndType] == 0)
        {
         DispWindow[WndType] = new TMyChildWnd1 (this, Text, WndType);
         GetApplication()->MakeWindow (DispWindow[WndType]);
         Flag = 1;
        }
//       else TmpWindow = DispWindow[WndType];

     if (Flag==0 || Flag==2)
        {
//         if (lstrcmpi (GrName, TmpWindow->GraphName) != 0)
//             TmpWindow->ReplaceGraph (Text, GrName);
//           else 
            {
/*             if (IsIconic (TmpWindow->HWindow) != 0)
                 ShowWindow (TmpWindow->HWindow, SW_RESTORE);
             BringWindowToTop (TmpWindow->HWindow);  shy 1997.5.8 */
             if (IsIconic (DispWindow[WndType]->HWindow) != 0)
                 ShowWindow (DispWindow[WndType]->HWindow, SW_RESTORE);
             BringWindowToTop (DispWindow[WndType]->HWindow);
//             InvalidateRect (TmpWindow->HWindow, NULL, TRUE);
            }
        }
    }
   else
    {

     if (DispWindow[RXBUFFWINDOW] == 0)
        {
         DispWindow[RXBUFFWINDOW] = new TMyChildWnd1 (this, Text, WndType);

⌨️ 快捷键说明

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