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 + -
显示快捷键?