commdlg.cpp

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

CPP
1,742
字号
// (chp+chno)->SIOOrd =chno;
 (chp+chno)->SIOOrd =GetDlgItemInt(HWindow, ID_SIONoEdit, 0, 0);
 (chp+chno)->ChNoInComm =GetDlgItemInt(HWindow, ID_ChNoEdit, 0, 0)&1;
/*
 if ((chp+chno)->ChNoInComm==0)
    CommPara[(chp+chno)->SIOOrd].CHANEL1=chno;
 if ((chp+chno)->ChNoInComm==1)
    CommPara[(chp+chno)->SIOOrd].CHANEL2=chno;
*/
 (chp+chno)->CHCheckFlag = IsDlgButtonChecked(HWindow, ID_ChCheckChk);
 (chp+chno)->MultiStation = IsDlgButtonChecked(HWindow, ID_RsvChk);
 (chp+chno)->ChangFlag=0;
 for (int i=7;i>=1;i--)
	{
		(chp+chno)->ChangFlag<<=1;
		if (IsDlgButtonChecked(HWindow, ID_RsvChk+i)) (chp+chno)->ChangFlag |=1;
	}
 UINT tmp = (UINT)SendDlgItemMessage(HWindow, ID_ChSyncCBox, CB_GETCURSEL, 0, 0);
 if (tmp==1) tmp = 0xd709;
   else tmp = 0xeb90;
 (chp+chno)->SyncWord[0] = tmp/256;
 (chp+chno)->SyncWord[1] = tmp&0xff;
}

void TChParamSetDialog::WMCommand(RTMessage msg)
{
 TDialog::WMCommand(msg);

 switch(msg.WParam)
   {
    case ID_ChNameList:
         GetChData();
         chno =(UINT) SendDlgItemMessage(HWindow, ID_ChNameList, LB_GETCURSEL, 0, 0);
         SetChData();
         break;
    case ID_InitPBt:
//         break;
    case ID_ExitPBt:
    case IDOK:
         GetChData();
         SaveChParam();
         CloseWindow(IDOK);
         break;
    case IDCANCEL://tzc
//         ReadChParam();
         break;
    case ID_ModemEdit:
         Radio=chno;
         GetApplication()->ExecDialog(new ModemParaDlg(this));
         break;
   }
}



ModemParaDlg::~ModemParaDlg()
{
    KillTimer(HWindow,1);
}


void ModemParaDlg::WMInitDialog(RTMessage msg)
{
TDialog::WMInitDialog(msg);
Check();
SetTimer (HWindow, 1, 1000U, NULL);
}
void ModemParaDlg::WMTimer(RTMessage msg)
{
switch(msg.WParam)
	{
	case  1:
    if (GetSetFlag==2)
       {
            Check();
            GetSetFlag=0;
       }
    break;
    }
}
void ModemParaDlg::Check()
{
chp = lpChannelParam+Radio;
char str[40];
TczPara1=chp->TczPara;
sprintf (str,"%d",chp->TczPara.HiBaud*256+chp->TczPara.LoBaud);
SendDlgItemMessage(HWindow,ID_Baud,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_Baud,(LPSTR)str);

sprintf (str,"%x%x",chp->SyncWord[0],chp->SyncWord[1]);
SendDlgItemMessage(HWindow,ID_SYNWORD,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_SYNWORD,(LPSTR)str);

sprintf (str,"%d",chp->TczPara.HiFreqTURE*256+chp->TczPara.LoFreqTURE);
SendDlgItemMessage(HWindow,ID_Frequence1,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_Frequence1,(LPSTR)str);

sprintf (str,"%d",chp->TczPara.HiFreqFALSE*256+chp->TczPara.LoFreqFALSE);
SendDlgItemMessage(HWindow,ID_Frequence0,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_Frequence0,(LPSTR)str);

sprintf (str,"%d",chp->TczPara.RadioDelay);
SendDlgItemMessage(HWindow,ID_DELAY,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_DELAY,(LPSTR)str);

/**************************************/
if (chp->TczPara.MultiUse==0) CheckRadioButton(HWindow,ID_MultiUse,ID_MultiUse+1,ID_MultiUse+1);
else  CheckRadioButton(HWindow,ID_MultiUse,ID_MultiUse+1,ID_MultiUse);
/**************************************/
if (chp->TczPara.StopBits==1) CheckRadioButton(HWindow,ID_StopBits,ID_StopBits+2,ID_StopBits);
else if (chp->TczPara.StopBits==2) CheckRadioButton(HWindow,ID_StopBits,ID_StopBits+2,ID_StopBits+1);
else if (chp->TczPara.StopBits==3) CheckRadioButton(HWindow,ID_StopBits,ID_StopBits+2,ID_StopBits+2);
else CheckRadioButton(HWindow,ID_StopBits,ID_StopBits+2,ID_StopBits);
/**************************************/
if (chp->TczPara.Verafys==0) CheckRadioButton(HWindow,ID_Verafy,ID_Verafy+2,ID_Verafy);
else if (chp->TczPara.Verafys==1) CheckRadioButton(HWindow,ID_Verafy,ID_Verafy+2,ID_Verafy+1);
else if (chp->TczPara.Verafys==2) CheckRadioButton(HWindow,ID_Verafy,ID_Verafy+2,ID_Verafy+2);
else CheckRadioButton(HWindow,ID_Verafy,ID_Verafy+2,ID_Verafy);
/**************************************/
if (chp->TczPara.Datas==7) CheckRadioButton(HWindow,ID_Datas,ID_Datas+1,ID_Datas);
else  CheckRadioButton(HWindow,ID_Datas,ID_Datas+1,ID_Datas+1);
/**************************************/
if (chp->TczPara.CommType==0) CheckRadioButton(HWindow,ID_CommType,ID_CommType+1,ID_CommType);
else CheckRadioButton(HWindow,ID_CommType,ID_CommType+1,ID_CommType+1);
/**************************************/
if (chp->TczPara.CommMode==0) CheckRadioButton(HWindow,ID_CommMode,ID_CommMode+1,ID_CommMode);
else CheckRadioButton(HWindow,ID_CommMode,ID_CommMode+1,ID_CommMode+1);
}
void ModemParaDlg::WMCommand(RTMessage msg)
{
 TDialog::WMCommand(msg);

 switch(msg.WParam)
   {
        case    ID_MultiUse:case    ID_MultiUse+1:
        case    ID_Datas:case    ID_Datas+1:
        case    ID_StopBits:case    ID_StopBits+1:case    ID_StopBits+2:
        case    ID_Verafy:case    ID_Verafy+1:case    ID_Verafy+2:
        case    ID_CommType:case    ID_CommType+1:
        case    ID_CommMode:case    ID_CommMode+1:
        case    IDOK:
/**************************************/
        if (IsDlgButtonChecked(HWindow,ID_MultiUse)==1) TczPara1.MultiUse=1;
        else TczPara1.MultiUse=0;
/**************************************/
        if (IsDlgButtonChecked(HWindow,ID_Datas+1)==1) TczPara1.Datas=8;
        else TczPara1.Datas=7;
/**************************************/
        if (IsDlgButtonChecked(HWindow,ID_StopBits)==1) TczPara1.StopBits=1;
        else if (IsDlgButtonChecked(HWindow,ID_StopBits+1)==1) TczPara1.StopBits=2;
        else TczPara1.StopBits=3;
/**************************************/
        if (IsDlgButtonChecked(HWindow,ID_Verafy)==1) TczPara1.Verafys=0;
        else if (IsDlgButtonChecked(HWindow,ID_Verafy+1)==1) TczPara1.Verafys=1;
        else TczPara1.Verafys=2;
/**************************************/
        if (IsDlgButtonChecked(HWindow,ID_CommType)==1) TczPara1.CommType=0;
        else TczPara1.CommType=1;
/**************************************/
        if (IsDlgButtonChecked(HWindow,ID_CommMode)==1) TczPara1.CommMode=0;
        else TczPara1.CommMode=1;
/**************************************/
/**************************************/
                chp->TczPara=TczPara1;
                char str[6]; int ret;
                GetDlgItemText(HWindow,ID_Baud,str,5);
                ret=atoi(str);
                chp->TczPara.HiBaud=HIBYTE(ret);
                chp->TczPara.LoBaud=LOBYTE(ret);

                GetDlgItemText(HWindow,ID_DELAY,str,4);
                ret=atoi(str);
                chp->TczPara.RadioDelay=ret&0xff;

                GetDlgItemText(HWindow,ID_Frequence1,str,5);
                ret=atoi(str);
                chp->TczPara.HiFreqTURE=HIBYTE(ret);
                chp->TczPara.LoFreqTURE=LOBYTE(ret);

                GetDlgItemText(HWindow,ID_Frequence0,str,5);
                ret=atoi(str);
                chp->TczPara.HiFreqFALSE=HIBYTE(ret);
                chp->TczPara.LoFreqFALSE=LOBYTE(ret);

                chp->TczPara.SyncWord=chp->SyncWord[1]*256+chp->SyncWord[0];
                break;
        case    ID_GETSET:
                GetSetFlag=1;
                GetModemSet(Radio);
                break;
        case    ID_ENREADSELF:
                EnReadSelf(Radio);
                break;
        case    ID_DIREADSELF:
                DiReadSelf(Radio);
                break;
        default :break;
   }
}



//-----------------------------------------------------------------------------------------//
TStaToChDialog::TStaToChDialog (PTWindowsObject AParent)
               : TDialog(AParent, "STATOCH_DLG")
{
}

void TStaToChDialog::WMInitDialog(RTMessage msg)
{
 TDialog::WMInitDialog(msg);

 char ChName[16];
 char *rotate[]={"左→右","右→左"};
 char *clk[]={"10","30","60"};
 char str[40]; 
 stano=0;
 Radio=0;
 for (int i=0; i<TotalStaNum; i++)
     {
      GetName(RTUDB, i, 0, str);
      SendDlgItemMessage(HWindow, ID_StaNameList, LB_ADDSTRING, i, (LONG)(LPSTR)str);
     }
 SendDlgItemMessage(HWindow, ID_MainChCBox, CB_ADDSTRING, 0, (LONG)(LPSTR)"不用");
 SendDlgItemMessage(HWindow, ID_BackChCBox, CB_ADDSTRING, 0, (LONG)(LPSTR)"不用");
 for (i=0; i<TotalChNum; i++)
     {
      sprintf(ChName, "通道%d", i);
      SendDlgItemMessage(HWindow, ID_MainChCBox, CB_ADDSTRING, i, (LONG)(LPSTR)ChName);
      SendDlgItemMessage(HWindow, ID_BackChCBox, CB_ADDSTRING, i, (LONG)(LPSTR)ChName);
     }
 for (i=0; i<2; i++)
      SendDlgItemMessage(HWindow, ID_RotateCBox, CB_ADDSTRING, i, (LONG)(LPSTR)rotate[i]);
 for (i=0; i<TotalProtoNum; i++)
      SendDlgItemMessage(HWindow, ID_ProtoCBox, CB_ADDSTRING, i, (LONG)(LPSTR)Protocal[i].ProtoName);

 SetStaData();
}


void TStaToChDialog::SetStaData()
{
 if ((lpStaParam+stano)->BackCh[0]>=TotalChNum) (lpStaParam+stano)->BackCh[0]=0xffff;
 if ((lpStaParam+stano)->BackCh[1]>=TotalChNum) (lpStaParam+stano)->BackCh[1]=0xffff;
 SendDlgItemMessage(HWindow, ID_MainChCBox, CB_SETCURSEL, (lpStaParam+stano)->BackCh[0]+1, 0);
 SendDlgItemMessage(HWindow, ID_BackChCBox, CB_SETCURSEL, (lpStaParam+stano)->BackCh[1]+1, 0);
 SendDlgItemMessage(HWindow, ID_RotateCBox, CB_SETCURSEL, (lpStaParam+stano)->RotateFlag&1, 0);
 SendDlgItemMessage(HWindow, ID_StaNameList,CB_SETCURSEL,stano,0);
 SendDlgItemMessage(HWindow, ID_ProtoCBox, CB_SETCURSEL, (lpStaParam+stano)->ProtoType, 0);

 CheckDlgButton(HWindow, ID_DataToHost,(lpStaParam+stano)->DataToHost);
}

void TStaToChDialog::GetStaData()
{
 (lpStaParam+stano)->BackCh[0] = SendDlgItemMessage(HWindow, ID_MainChCBox, CB_GETCURSEL, 0, 0)-1;
 (lpStaParam+stano)->BackCh[1] = SendDlgItemMessage(HWindow, ID_BackChCBox, CB_GETCURSEL, 0, 0)-1;
 (lpStaParam+stano)->CurrUsedCh = (lpStaParam+stano)->BackCh[0];
 if ((lpStaParam+stano)->BackCh[0] < TotalChNum)
     (lpChannelParam+(lpStaParam+stano)->BackCh[0])->StaNo = stano;
 if ((lpStaParam+stano)->BackCh[1] < TotalChNum)
     (lpChannelParam+(lpStaParam+stano)->BackCh[1])->StaNo = stano;
 (lpStaParam+stano)->RotateFlag = SendDlgItemMessage(HWindow, ID_RotateCBox, CB_GETCURSEL, 0, 0);
 (lpStaParam+stano)->ProtoType = SendDlgItemMessage(HWindow, ID_ProtoCBox, CB_GETCURSEL, 0, 0);
 for (int i=0; i<TotalStaNum; i++)
     {
      int k=(lpStaParam+i)->ProtoType;
      if ((Protocal[k].hDLLInst==NULL) && ((lpStaParam+i)->CurrUsedCh!=0xff))
         {
          Protocal[k].hDLLInst = LoadLibrary(Protocal[k].DllName);
          if ((UINT)Protocal[k].hDLLInst >= 32)
             {
              Protocal[k].RxProc=(RXPROC)GetProcAddress(Protocal[k].hDLLInst,"RxProc");
              Protocal[k].TxProc=(TXPROC)GetProcAddress(Protocal[k].hDLLInst,"TxProc");
             }
         }
     }

  (lpStaParam+stano)->DataToHost=(BYTE)IsDlgButtonChecked(HWindow, ID_DataToHost);

}

void TStaToChDialog::WMCommand(RTMessage msg)
{
 TDialog::WMCommand(msg);
 switch(msg.WParam)
   {
    case ID_StaNameList:
		 UINT tmp=SendDlgItemMessage(HWindow, ID_StaNameList, LB_GETCURSEL, 0, 0);
		 if (tmp!=LB_ERR)
             {
                GetStaData();
  			    rtuno = stano = tmp;
                SetStaData();
             }
         break;
    case ID_SavePBt:    case IDOK:
         GetStaData();
         SaveStaParam();
         SaveChParam();    //因为此处有可能改变通道参数中对应的站号
	 break;
    case ID_ExitPBt:case IDCANCEL:
         ReadStaParam();
         break;
	case ID_PollBotton:
         GetApplication()->ExecDialog(new TPollSetDialog(this));
         break;

    default:
         break;
   }
}


TPollSetDialog::TPollSetDialog (PTWindowsObject AParent)
               :TDialog(AParent, "POLLSET_DLG")
{
}
void TPollSetDialog::WMInitDialog(RTMessage msg)
{
 TDialog::WMInitDialog(msg);
 stano=rtuno;
 SetPollSetData();
}

void TPollSetDialog::SetPollSetData(void)
{
 char str[16];
 sprintf(str, "%03d", (lpStaParam+stano)->YCB[0]);
 SendDlgItemMessage(HWindow,ID_YcStart,WM_CLEAR, 0, 0);
 SetDlgItemText(HWindow,ID_YcStart,(LPSTR)str);

 sprintf(str, "%03d", (lpStaParam+stano)->YXB[0]);
 SendDlgItemMessage(HWindow,ID_YxStart,WM_CLEAR, 0, 0);
 SetDlgItemText(HWindow,ID_YxStart,(LPSTR)str);

 sprintf(str, "%03d", (lpStaParam+stano)->KWHB[0]);
 SendDlgItemMessage(HWindow,ID_PulStart,WM_CLEAR, 0, 0);
 SetDlgItemText(HWindow,ID_PulStart,(LPSTR)str);

 sprintf(str, "%03d", (lpStaParam+stano)->STATIONNO);
 SendDlgItemMessage(HWindow,ID_DownRtu,WM_CLEAR, 0, 0);
 SetDlgItemText(HWindow,ID_DownRtu,(LPSTR)str);

 sprintf(str, "%03d", (lpStaParam+stano)->ConStartBoard);
 SendDlgItemMessage(HWindow,ID_ConStart,WM_CLEAR, 0, 0);
 SetDlgItemText(HWindow,ID_ConStart,(LPSTR)str);


⌨️ 快捷键说明

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