commdlg.cpp
来自「这是一个在正实际应用当中运行的电力监控系统软件源代码」· C++ 代码 · 共 1,742 行 · 第 1/5 页
CPP
1,742 行
sprintf(str, "%03d", (lpStaParam+stano)->Interval);
SendDlgItemMessage(HWindow,ID_Interval,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_Interval,(LPSTR)str);
sprintf(str, "%03d", (lpStaParam+stano)->RepeatTimes);
SendDlgItemMessage(HWindow,ID_RepTimes,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_RepTimes,(LPSTR)str);
sprintf(str, "%4d", (lpStaParam+stano)->DeadValue);
SendDlgItemMessage(HWindow,ID_Dead,WM_CLEAR, 0, 0);
SetDlgItemText(HWindow,ID_Dead,(LPSTR)str);
CheckDlgButton(HWindow, ID_PollORCdt, (lpStaParam+stano)->PollCdt);
}
void TPollSetDialog::GetPollSetData(void)
{
char str[6]; int ret;
GetDlgItemText(HWindow,ID_YcStart,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"地址输入错误","",MB_OK);
(lpStaParam+stano)->YCB[0]=atoi(str);
}
else (lpStaParam+stano)->YCB[0]=atoi(str);
GetDlgItemText(HWindow,ID_YxStart ,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"地址输入错误","",MB_OK);
(lpStaParam+stano)->YXB[0]=atoi(str);
}
else (lpStaParam+stano)->YXB[0]=atoi(str);
GetDlgItemText(HWindow,ID_PulStart,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"地址输入错误","",MB_OK);
(lpStaParam+stano)->KWHB[0]=atoi(str);
}
else (lpStaParam+stano)->KWHB[0]=atoi(str);
GetDlgItemText(HWindow,ID_DownRtu,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"地址输入错误","",MB_OK);
(lpStaParam+stano)->STATIONNO=atoi(str);
}
else (lpStaParam+stano)->STATIONNO=atoi(str);
GetDlgItemText(HWindow,ID_ConStart,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"地址输入错误","",MB_OK);
(lpStaParam+stano)->ConStartBoard=atoi(str);
}
else (lpStaParam+stano)->ConStartBoard=atoi(str);
GetDlgItemText(HWindow,ID_Interval,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"间隔输入错误","",MB_OK);
(lpStaParam+stano)->Interval=atoi(str);
}
else (lpStaParam+stano)->Interval=atoi(str);
if ((lpStaParam+stano)->Interval<5) (lpStaParam+stano)->Interval=5; //在3秒~~60秒之间
if ((lpStaParam+stano)->Interval>200) (lpStaParam+stano)->Interval=200;
(lpStaParam+stano)->ProcCount=(lpStaParam+stano)->Interval*10;
GetDlgItemText(HWindow,ID_Dead,str,5);
ret=atoi(str);
if (ret>=4096)
{
MessageBox(GetFocus(),"地址输入错误","",MB_OK);
}
else (lpStaParam+stano)->DeadValue=(atoi(str)&0xfff);
GetDlgItemText(HWindow,ID_RepTimes ,str,4);
ret=atoi(str);
if (ret>=256)
{ MessageBox(GetFocus(),"地址输入错误","",MB_OK);
(lpStaParam+stano)->RepeatTimes=atoi(str);
}
else (lpStaParam+stano)->RepeatTimes=atoi(str);
(lpStaParam+stano)->PollCdt = IsDlgButtonChecked(HWindow, ID_PollORCdt);
//0,1,2....未选中.未选中,灰色
}
void TPollSetDialog::WMCommand(RTMessage msg)
{
TDialog::WMCommand(msg);
switch(msg.WParam)
{
case ID_SavePBt: case IDOK:
GetPollSetData();
SaveStaParam();
SaveChParam();
break;
case ID_ExitPBt:case IDCANCEL:
// GetStaData();
// ReadChParam();
ReadStaParam();
// CloseWindow();
break;
}
}
void ReadStaParam()
{
OFSTRUCT OfS;
HFILE hf = OpenFile ((LPSTR)"c:\\TCZ\\STADEF.dat", (LPOFSTRUCT)&OfS, OF_READ);
if (hf != HFILE_ERROR)
{
_lread(hf, lpStaParam, sizeof(STATIONPARAM)*TotalStaNum);
_lclose(hf);
}
}
void SaveStaParam()
{
OFSTRUCT OfS;
HFILE hf = OpenFile ((LPSTR)"c:\\TCZ\\STADEF.dat", (LPOFSTRUCT)&OfS, OF_CREATE);
if (hf != HFILE_ERROR)
{
_lwrite(hf, lpStaParam, sizeof(STATIONPARAM)*TotalStaNum);
_lclose(hf);
}
}
//--------------------------------------------------------------------------//
TSystemCfgDialog::TSystemCfgDialog (PTWindowsObject AParent)
: TDialog(AParent, "SYSTEMCFG_DLG")
{
}
void TSystemCfgDialog::WMInitDialog(RTMessage msg)
{
TDialog::WMInitDialog(msg);
char *NetP[]={"NET BUEI","TCP/IP","IPX/SPX"};
char *SysP[]={"WDZ-9主站","DF-8100综合监控系统","JF100计费系统","PD100配电系统","其它"};
char *CommP[]={"不配置多串口卡","一块","两块","三块","四块","五块","六块","七块","八块"};
CheckRadioButton(HWindow,ID_NodeABRd,ID_NodeBBRd,ID_NodeABRd+syscfg->GetNode());
for (int i=0; i<3;i++)
SendDlgItemMessage(HWindow,ID_NetPCBox,CB_ADDSTRING,0,(LONG)(LPSTR)NetP[i]);
SendDlgItemMessage(HWindow,ID_NetPCBox,CB_SETCURSEL,(WPARAM)syscfg->GetNetProto(),0);
for (i=0; i<5; i++)
SendDlgItemMessage(HWindow,ID_SysPCBox,CB_ADDSTRING,0,(LONG)(LPSTR)SysP[i]);
SendDlgItemMessage(HWindow,ID_SysPCBox,CB_SETCURSEL,(WPARAM)syscfg->GetSysProto(),0);
for (i=0; i<9; i++)
SendDlgItemMessage(HWindow,ID_CommPorts,CB_ADDSTRING,0,(LONG)(LPSTR)CommP[i]);
SendDlgItemMessage(HWindow,ID_CommPorts,CB_SETCURSEL,(WPARAM)syscfg->GetCommCardNums(),0);
CheckDlgButton(HWindow, ID_YcSelect, syscfg->GetYcSelect()&0xf);
CheckDlgButton(HWindow, ID_HaveCTK, syscfg->GetYcSelect()>>4);
}
void TSystemCfgDialog::WMCommand(TMessage &msg)
{
TDialog::WMCommand(msg);
switch(msg.WParam)
{
case ID_NodeABRd:
case ID_NodeBBRd:
CheckRadioButton(HWindow,ID_NodeABRd,ID_NodeBBRd,msg.WParam);
break;
// case ID_NetPCBox:
// break;
// case ID_SysPCBox:
/* case ID_SToMainPBt:
PostMessage (hMainWindow, WM_SWITCHTOMAIN, (WORD)0, (LONG)0);
break;
case ID_SToBackPBt:
PostMessage (hMainWindow, WM_SWITCHTOBACK, (WORD)0, (LONG)0);
break; shy 97.7.9*/
case IDOK:
if (IsDlgButtonChecked(HWindow, ID_NodeABRd)==1) syscfg->SetNode(0);
else if (IsDlgButtonChecked(HWindow, ID_NodeBBRd)==1) syscfg->SetNode(1);
PostMessage (hMainWindow, WM_NODESWITCH, (WORD)0, (LONG)0);
UINT tmp = (UINT)SendDlgItemMessage(HWindow, ID_NetPCBox, CB_GETCURSEL, 0, 0);
syscfg->SetNetProto((BYTE)tmp);
tmp =(UINT) SendDlgItemMessage(HWindow, ID_SysPCBox, CB_GETCURSEL, 0, 0);
syscfg->SetSysProto((BYTE)tmp);
tmp = (UINT)SendDlgItemMessage(HWindow, ID_CommPorts, CB_GETCURSEL, 0, 0);
syscfg->SetCommCardNums((BYTE)tmp);
BYTE TEMP=(BYTE)IsDlgButtonChecked(HWindow, ID_YcSelect)&0xf|
(BYTE)IsDlgButtonChecked(HWindow, ID_HaveCTK)<<4;
// syscfg->SetYcSelect((BYTE)IsDlgButtonChecked(HWindow, ID_YcSelect));
syscfg->SetYcSelect(TEMP);
syscfg->SaveData();
// if (HardwareInstallFlag[CTKBOARD]) SwitchToMain();
if (syscfg->GetNetProto()==1) ShowWindow(pTcpWin->HWindow,SW_RESTORE);
CloseWindow(IDOK);
break;
}
}
void CheckBaudRate(CTKSIO FAR *lpctk)
{
if (lpctk->BaudRate[0]==0) lpctk->BaudRate[0]=3072;
if (lpctk->BaudRate[1]==0) lpctk->BaudRate[1]=3072;
if (lpctk->BaudRate[2]==0) lpctk->BaudRate[2]=3072;
if (lpctk->BaudRate[3]==0) lpctk->BaudRate[3]=3072;
if (lpctk->BaudRate[4]==0) lpctk->BaudRate[4]=3072;
if (lpctk->BaudRate[5]==0) lpctk->BaudRate[5]=3072;
if (lpctk->BaudRate[6]==0) lpctk->BaudRate[6]=3072;
if (lpctk->BaudRate[7]==0) lpctk->BaudRate[7]=3072;
if (lpctk->BaudRate[8]==0) lpctk->BaudRate[8]=3072;
if (lpctk->BaudRate[9]==0) lpctk->BaudRate[9]=3072;
if (lpctk->BaudRate[10]==0) lpctk->BaudRate[10]=3072;
if (lpctk->BaudRate[11]==0) lpctk->BaudRate[11]=3072;
}
void ChanelStatus::WMInitDialog(TMessage& msg)
{
char ChName[20],temp[30],no;
char *s[8]={"通道未用","通道关闭","通讯中断","字符无效","失 步","误码率高","空 发","通道正常"};
sprintf(temp, "%10d",lpChannelParam->ErrDataNum);
SetDlgItemText(HWindow, ID_ErrDatas, (LPSTR)temp);
sprintf(temp, "%10d",lpChannelParam->InvalidCharNum);
SetDlgItemText(HWindow, ID_ErrDatas+1, (LPSTR)temp);
DWORD chs = lpChannelParam->CHStatus;
if (!lpChannelParam->CHValidFlag) no=0;
else if (!(chs&ChOpen)) no=1;
else if (chs&CommBreakFlag1) no=2;
else if (chs&CharInvFlag1) no=3;
else if (chs&NoSyncFlag1) no=4;
else if (chs&ErrDataFlag1) no=5;
else if (chs&NoTxFlag1) no=6;
else no=7;
wsprintf (temp,"%s",s[no]);
SetDlgItemText(HWindow, ID_ErrDatas+2, temp);
for (int i=0; i<TotalChNum; i++)
{
sprintf(ChName, " %2d 号 通 道", i);
SendDlgItemMessage(HWindow, ID_ChanelList, LB_ADDSTRING, i, (LONG)(LPSTR)ChName);
}
SendDlgItemMessage(HWindow, ID_ChanelList, LB_SETCURSEL, 0, 0);
SetTimer (HWindow, 5, 1000U, NULL);
}
void ChanelStatus::WMCommand(TMessage &msg)
{
TDialog::WMCommand(msg);
char temp[30];BYTE no;
char *s[8]={"通道未用","通道关闭","通讯中断","字符无效","失 步","误码率高","空 发","通道正常"};
BYTE CHno = SendDlgItemMessage(HWindow,ID_ChanelList , LB_GETCURSEL, 0, 0);
switch(msg.WParam)
{
case ID_ChanelList:
sprintf(temp, "%10d",(lpChannelParam+CHno)->ErrDataNum);
SetDlgItemText(HWindow, ID_ErrDatas, (LPSTR)temp);
sprintf(temp, "%10d",(lpChannelParam+CHno)->InvalidCharNum);
SetDlgItemText(HWindow, ID_ErrDatas+1, (LPSTR)temp);
DWORD chs = (lpChannelParam+CHno)->CHStatus;
if (!(lpChannelParam+CHno)->CHValidFlag) no=0;
else if (!(chs&ChOpen)) no=1;
else if (chs&CommBreakFlag1) no=2;
else if (chs&CharInvFlag1) no=3;
else if (chs&NoSyncFlag1) no=4;
else if (chs&ErrDataFlag1) no=5;
else if (chs&NoTxFlag1) no=6;
else no=7;
wsprintf (temp,"%s",s[no]);
SetDlgItemText(HWindow, ID_ErrDatas+2, (LPSTR)temp);
break;
case IDOK:
case IDCANCEL:
KillTimer (HWindow, 5);
break;
}
}
void ChanelStatus::WMTimer(TMessage &msg)
{
char temp[30];BYTE no;
char *s[8]={"通道未用","通道关闭","通讯中断","字符无效","失 步","误码率高","空 发","通道正常"};
BYTE CHno = SendDlgItemMessage(HWindow,ID_ChanelList , LB_GETCURSEL, 0, 0);
switch(msg.WParam)
{
case 5:
sprintf(temp, "%10d",(lpChannelParam+CHno)->ErrDataNum);
SetDlgItemText(HWindow, ID_ErrDatas, (LPSTR)temp);
sprintf(temp, "%10d",(lpChannelParam+CHno)->InvalidCharNum);
SetDlgItemText(HWindow, ID_ErrDatas+1, (LPSTR)temp);
DWORD chs = (lpChannelParam+CHno)->CHStatus;
if (!(lpChannelParam+CHno)->CHValidFlag) no=0;
else if (!(chs&ChOpen)) no=1;
else if (chs&CommBreakFlag1) no=2;
else if (chs&CharInvFlag1) no=3;
else if (chs&NoSyncFlag1) no=4;
else if (chs&ErrDataFlag1) no=5;
else if (chs&NoTxFlag1) no=6;
else no=7;
wsprintf (temp,"%s",s[no]);
SetDlgItemText(HWindow, ID_ErrDatas+2, (LPSTR)temp);
break;
}
}
TEnterPassDlg::TEnterPassDlg(PTWindowsObject AParent, int ResourceId)
: TDialog (AParent, ResourceId)
{
Text[0] = 0;
new TEdit (this, IDE_ENTERPASS, sizeof (Text));
TransferBuffer = Text;
};
//TEnterPassDlg::~TEnterPassDlg ()
//{
//if (Edit) delete Edit;
//}
TModiPassDlg::TModiPassDlg(PTWindowsObject AParent, int ResourceId)
: TDialog (AParent, ResourceId)
{
Text[0] = 0;
new TEdit (this, IDE_NEWPASS, sizeof(Text));
TransferBuffer=Text;
};
//TModiPassDlg::~TModiPassDlg()
//{
//if (Edit1) delete Edit1;
//if(Edit2) delete Edit2;
//}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?