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