wincomm.cpp
来自「这是一个在正实际应用当中运行的电力监控系统软件源代码」· C++ 代码 · 共 1,963 行 · 第 1/5 页
CPP
1,963 行
char Str1[20];
// sprintf(text, "%05.2fMW ", 28.12);
//TZC
int ycv;
WORD wycv = (WORD)GetValue(YCDB, TotalStaNum-1, 0);
if (wycv&0x8000)
{
wycv &= 0x7fff; ycv = wycv*(-1);
}
else ycv = wycv;
int ycp = GetPoint(YCDB, TotalStaNum-1, 0) & 3;
float coe=1.0; for (int j=0; j<ycp; j++) coe *= 0.1;
sprintf(Str1, "%s%df MW", "%.", ycp);
sprintf(text, Str1, (float)(ycv*coe));
SetBkColor (DC, StatusLineC[0]);
SetTextColor (DC, RGB(255, 255, 255));
TextOut (DC, r.left+20, r.top, text, lstrlen(text));
r.left += StatusBarW[0]+3;
wycv = (WORD)GetValue(YCDB, TotalStaNum-1, 1);
if (wycv&0x8000)
{
wycv &= 0x7fff; ycv = wycv*(-1);
}
else ycv = wycv;
ycp = GetPoint(YCDB, TotalStaNum-1, 0) & 3;
coe=1.0; for (j=0; j<ycp; j++) coe *= 0.1;
// coe*=GetCoe(YCDB, TotalStaNum-1, 0);
// sprintf(text, "%05.2fMVar ", 12.56);
sprintf(Str1, "%s%df Mvar", "%.", ycp);
sprintf(text, Str1,(float)(ycv*coe));
SetBkColor (DC, StatusLineC[1]);
TextOut (DC, r.left+16, r.top, text, lstrlen(text));
//TZC
r.left += StatusBarW[1]+3;
sprintf(text, "%05.2fHZ ", (float)Freq/100.0);
SetBkColor (DC, StatusLineC[2]);
TextOut (DC, r.left+12, r.top, text, lstrlen(text));
_dos_getdate(&d);
_dos_gettime(&t);
r.left += StatusBarW[2]+3;
// wsprintf(text, "%04d年%02d月%02d日 星期%s %d %02d时%02d分%02d秒",
// d.year, d.month, d.day, myweek[d.dayofweek],cnt5, t.hour, t.minute, t.second);
wsprintf(text, "%04d年%02d月%02d日 星期%s %02d时%02d分%02d秒",
d.year, d.month, d.day, myweek[d.dayofweek], t.hour, t.minute, t.second);
/*
struct date D;
struct time T;
getdate (&D);
gettime (&T);
DWORD times=calsec(D,T);
Group TT=Current(times);
wsprintf (text,"%d年%d月%d日 %d时%d%d分%d%d秒 倒计数:%ld",TT.year,TT.month,TT.day,TT.hour,TT.min/10,TT.min%10,TT.sec/10,TT.sec%10,times);
*/
// wsprintf (text,"%lx %lu %d %lu %8d",times,times,365*24*3600,365*24*3600,31536000);
// sprintf (text,"%ld",times);
SetBkColor (DC, StatusLineC[3]);
TextOut (DC, r.left+10, r.top, text, lstrlen(text));
r.left += StatusBarW[3]+3;
if (ThisNodeName==MainFertName)
wsprintf(text, "通信处理机%c(主)",ThisNodeName);
else wsprintf(text, "通信处理机%c(辅)",ThisNodeName);
// SetBkColor (DC, StatusLineC[4]);
SetBkColor (DC, RGB(0,128,64));
SetTextColor(DC, RGB(255,0,0)); //tzc
if (OdsFlag!=0 && ThisNodeName==MainFertName)
{
wsprintf (text,"远程维护进行中");
SetTextColor(DC, RGB(255,255,0));
}
if (ThisNodeName!=MainFertName)
// SetTextColor(DC, RGB(128,128,128));
SetTextColor(DC, RGB(0,0,0));
TextOut (DC, r.left+1, r.top, text, lstrlen(text));
ReleaseDC (hMainWindow, DC);
}
//---------------------------------------------------------------------------------
NodeStatusWindow::NodeStatusWindow (PTWindowsObject AParent, LPSTR ATitle)
: TWindow (AParent, ATitle)
{
Attr.X = 0;
Attr.Y = 0;
Attr.W = CXScreen;
Attr.H = CYScreen;
Attr.Style = WS_POPUP | WS_VISIBLE;
hMan1 = LoadBitmap (GetApplication()->hInstance,"man1");
hMan2 = LoadBitmap (GetApplication()->hInstance,"man2");
hMan3 = LoadBitmap (GetApplication()->hInstance,"man3");
hNull16 = LoadBitmap (GetApplication()->hInstance,"null16");
hNull32 = LoadBitmap (GetApplication()->hInstance,"null32");
hMainf = LoadBitmap (GetApplication()->hInstance,"mainf");
if (CXScreen == 800) {
// hPz = LoadBitmap (GetApplication()->hInstance,"back8_6");
ResolutionMode = 1;
new TButton(this, ID_WPAINT, "绘图包", 700,370,100, 30, FALSE);
new TButton(this, ID_DM, "数据库管理", 700,410,100, 30, FALSE);
new TButton(this, ID_MMI, "调度员", 700,450, 100, 30, FALSE);
new TButton(this, ID_TABLE, "报表", 700,490, 100, 30, FALSE);
new TButton(this, ID_EXITSS, "退出此界面",700,530, 100, 30, FALSE);
}
else if (CXScreen == 1024) { // && CYScreen == 768) {
// hPz = LoadBitmap (GetApplication()->hInstance,"back10_7");
// hPz=0;
ResolutionMode = 2;
new TButton(this, ID_WPAINT, "绘图包", 450, 698,100, 30, FALSE);
new TButton(this, ID_DM, "数据库管理", 550, 698,100, 30, FALSE);
new TButton(this, ID_MMI, "调度员", 650, 698, 100, 30, FALSE);
new TButton(this, ID_TABLE, "报表", 750, 698, 100, 30, FALSE);
new TButton(this, ID_EXITSS, "退出此界面", 850, 698, 100, 30, FALSE);
}
else if (CXScreen == 640) { // && CYScreen == 480) {
// hPz = LoadBitmap (GetApplication()->hInstance,"back6_4");
ResolutionMode = 0;
new TButton(this, ID_WPAINT, "绘图包", 540,290,100, 30, FALSE);
new TButton(this, ID_DM, "数据库管理", 540,330,100, 30, FALSE);
new TButton(this, ID_MMI, "调度员", 540,360,100, 30, FALSE);
new TButton(this, ID_TABLE, "报表", 540,390,100, 30, FALSE);
new TButton(this, ID_EXITSS, "退出此界面",540,420,100, 30, FALSE);
}
else { hPz = 0; };
}
NodeStatusWindow::~NodeStatusWindow ()
{
KillTimer (HWindow, 1);
if (hMan1) DeleteObject (hMan1);
if (hMan2) DeleteObject (hMan2);
if (hMan3) DeleteObject (hMan3);
if (hPz) DeleteObject (hPz);
if (hNull16) DeleteObject (hNull16);
if (hNull32) DeleteObject (hNull32);
if (hMainf) DeleteObject (hMainf);
pStatusWin=0;
}
void NodeStatusWindow::SetupWindow ()
{
TWindow::SetupWindow ();
hNodeWnd=HWindow;
SetTimer (HWindow,1,500U,NULL);
}
void NodeStatusWindow::GetWindowClass (WNDCLASS _FAR & AWndClass)
{
TWindow::GetWindowClass (AWndClass);
AWndClass.style |= CS_DBLCLKS;
}
void NodeStatusWindow::WMLButtonDblClk (RTMessage)
{
}
void NodeStatusWindow::WMRButtonDblClk (RTMessage)
{
PostMessage (HWindow,WM_CLOSE,0,0l);
}
POINT HostAPos[3]= { {190,94}, {190,94},{190,94} };
POINT FertAPos[3]= { {190,304},{190,304},{190,304} };
POINT RTUAPos[3] = { {104,419},{104,419},{104,419} };
POINT RTUIPos[3] = { {104,480},{104,480},{104,480} };
void NodeStatusWindow::WMTimer (RTMessage msg)
{
char buf[50], buf1[50], buf2[60];
POINT HZPos[3] ={ {77 ,455}, {77,548},{77,705}};
POINT SumPos[3] ={ {194,455}, {180,548},{194,705}};
POINT TimePos[3] ={ {277,455}, {277,548},{277,705}};
struct time tim;
struct date dat;
static int Off = 0, TimerFlag = 0;
PostMessage (HWindow,WM_CLOSE,0,0l);//tzc
return;
if (msg.WParam == 1) {
HDC PaintDC=GetDC (HWindow);
HDC hMemDC=CreateCompatibleDC (PaintDC);
if (TimerFlag == 0) {
SetBkColor (PaintDC, RGB (192,192,192));
// float f= Addr->SysPara_addr->GetSysFrq()/100.0;
sprintf (buf, "%05.2f ",Freq);
// f=GetAYC (RTUMAXNUM-1, 0, PYC);
// sprintf (buf1, "%05.2f ", f);
getdate (&dat); gettime(&tim);
wsprintf (buf2, "%04d-%02d-%02d %02d:%02d:%02d ", dat.da_year,dat.da_mon,dat.da_day,tim.ti_hour, tim.ti_min, tim.ti_sec);
SetTextColor (PaintDC, RGB(128,128,128));
TextOut (PaintDC,HZPos[ResolutionMode].x,HZPos[ResolutionMode].y,buf,strlen(buf));
TextOut (PaintDC,SumPos[ResolutionMode].x,SumPos[ResolutionMode].y,buf1,strlen(buf1));
TextOut (PaintDC,TimePos[ResolutionMode].x,TimePos[ResolutionMode].y,buf2,strlen(buf2));
int OldMode = SetBkMode (PaintDC, TRANSPARENT);
SetTextColor (PaintDC, RGB(255,255,255));
TextOut (PaintDC,HZPos[ResolutionMode].x+2,HZPos[ResolutionMode].y+2,buf,strlen(buf));
TextOut (PaintDC,SumPos[ResolutionMode].x+2,SumPos[ResolutionMode].y+2,buf1,strlen(buf1));
TextOut (PaintDC,TimePos[ResolutionMode].x+2,TimePos[ResolutionMode].y+2,buf2,strlen(buf2));
SetTextColor (PaintDC, RGB(0,0,0));
TextOut (PaintDC,HZPos[ResolutionMode].x+1,HZPos[ResolutionMode].y+1,buf,strlen(buf));
TextOut (PaintDC,SumPos[ResolutionMode].x+1,SumPos[ResolutionMode].y+1,buf1,strlen(buf1));
TextOut (PaintDC,TimePos[ResolutionMode].x+1,TimePos[ResolutionMode].y+1,buf2,strlen(buf2));
SetBkMode (PaintDC, OldMode);
TimerFlag = 1;
}
else TimerFlag = 0;
/* if(scadainf.NetAdapter && RTUMAXNUM>=2)
{
HBITMAP hOldBmp;
for (int i=1;i<=7;i++) {
if (HostNode[i-1].Use==TRUE) {
switch ((StatusCount+i)%3) {
case 0: hOldBmp = (HBITMAP)SelectObject (hMemDC,hMan1);
break;
case 1: hOldBmp = (HBITMAP)SelectObject (hMemDC,hMan2);
break;
case 2: hOldBmp = (HBITMAP)SelectObject (hMemDC,hMan3);
break;
}
}
else hOldBmp = (HBITMAP)SelectObject (hMemDC,hNull32);
BitBlt (PaintDC, HostAPos[ResolutionMode].x+(i-1)*50, HostAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
if ((i-1)<BACKHOSTNODEMAXNUM && HostNode[i-1].NodeState=='M') SelectObject (hMemDC,hMainf);
else SelectObject (hMemDC,hNull16);
BitBlt (PaintDC, HostAPos[ResolutionMode].x+(i-1)*50-16, HostAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
for (i=8;i<=HOSTNODEMAXNUM;i++) {
if (HostNode[i-1].Use==TRUE) {
switch ((StatusCount+i)%3) {
case 0: SelectObject (hMemDC,hMan1);
break;
case 1: SelectObject (hMemDC,hMan2);
break;
case 2: SelectObject (hMemDC,hMan3);
break;
} TotalStaNum
}
else SelectObject (hMemDC,hNull32);
BitBlt (PaintDC, FertAPos[ResolutionMode].x+100+(i-7)*50, FertAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
if ((i-1)<BACKHOSTNODEMAXNUM && HostNode[i-1].NodeState=='M') {
SelectObject (hMemDC,hMainf);
BitBlt (PaintDC, FertAPos[ResolutionMode].x+100+(i-7)*50-16, FertAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
else {
SelectObject (hMemDC,hNull16);
BitBlt (PaintDC, FertAPos[ResolutionMode].x+100+(i-7)*50-16, FertAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
}
for (i=1;i<=FERTNODEMAXNUM;i++) {
if (FertNode[i-1].Use==TRUE) {
switch ((StatusCount+i)%3) {
case 0: SelectObject (hMemDC,hMan1);
break;
case 1: SelectObject (hMemDC,hMan2);
break;
case 2: SelectObject (hMemDC,hMan3);
break;
}
}
else SelectObject (hMemDC, hNull32);
BitBlt (PaintDC, FertAPos[ResolutionMode].x+(i-1)*50, FertAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
if (FertNode[i-1].NodeState=='M') SelectObject (hMemDC,hMainf);
else SelectObject (hMemDC,hNull16);
BitBlt (PaintDC, FertAPos[ResolutionMode].x+(i-1)*50-16, FertAPos[ResolutionMode].y+32, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
for (i=0;i<20;i++) {
RTUPARA _FAR *pRTU;
pRTU=Addr->RTUPara_addr+i;
if (pRTU->GetUseFlag() && pRTU->GetStatus() &&
(FertNode[0].Use==TRUE || FertNode[1].Use==TRUE)) {
switch ((StatusCount+i)%3) {
case 0: SelectObject (hMemDC,hMan1);
break;
case 1: SelectObject (hMemDC,hMan2);
break;
case 2: SelectObject (hMemDC,hMan3);
break;
}
if (i<10)
BitBlt (PaintDC, RTUAPos[ResolutionMode].x+(i%10)*40, RTUAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
else
BitBlt (PaintDC, RTUIPos[ResolutionMode].x+(i%10)*40, RTUIPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
else {
SelectObject (hMemDC,hNull32);
if (i<10)
BitBlt (PaintDC, RTUAPos[ResolutionMode].x+(i%10)*40, RTUAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
else
BitBlt (PaintDC, RTUIPos[ResolutionMode].x+(i%10)*40, RTUIPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
}
if (StatusCount >= 2) StatusCount=0;
else StatusCount++;
SelectObject (hMemDC, hOldBmp);
if (ResolutionMode < 3) {
SetBkColor (PaintDC, RGB (192,192,192));
int FlowStartPos[3] = {100, 120, 120};
int FlowWidth[3] = {40, 40, 40};
int FlowStartY[3] = {420, 420, 420};
int FlowEndY[3] = {384, 384, 384};
HPEN hOP = (HPEN)SelectObject (PaintDC, CreatePen (PS_DOT, 1, RGB(250,0,0)));
int x;
for (i=0; i<10; i++) {
x = FlowStartPos[ResolutionMode] + i*FlowWidth[ResolutionMode];
MoveTo (PaintDC, x, FlowStartY[ResolutionMode]-Off);
LineTo (PaintDC, x, FlowEndY[ResolutionMode]);
}
switch (ResolutionMode) {
case 0:
case 1:
case 2:
MoveTo (PaintDC, 120+Off, 384); LineTo (PaintDC, 230, 384);
MoveTo (PaintDC, x-Off, 384); LineTo (PaintDC, 230, 384);
MoveTo (PaintDC, 230, 384-Off); LineTo (PaintDC, 230, 359);
MoveTo (PaintDC, 230-Off, 359); LineTo (PaintDC, 206, 359);
MoveTo (PaintDC, 230+Off, 359); LineTo (PaintDC, 255, 359);
MoveTo (PaintDC, 206, 359-Off); LineTo (PaintDC, 206, 336);
MoveTo (PaintDC, 255, 359-Off); LineTo (PaintDC, 255, 336);
MoveTo (PaintDC, 205, 303-Off); LineTo (PaintDC, 205, 276);
MoveTo (PaintDC, 208, 276+Off); LineTo (PaintDC, 208, 303);
MoveTo (PaintDC, 253, 303-Off); LineTo (PaintDC, 253, 276);
MoveTo (PaintDC, 256, 276+Off); LineTo (PaintDC, 256, 303);
break;
}
DeleteObject (SelectObject(PaintDC, hOP));
}
} //RTUMAXNUM>1 and Net Exist
else if(scadainf.RS232Comm)
{
}
ReleaseDC (HWindow,PaintDC);
DeleteDC (hMemDC); */
}
Off++;
Off %= 7;
}
void NodeStatusWindow::WMShowWindow (RTMessage Msg)
{
if (Msg.LParam != SW_PARENTCLOSING) DefWndProc (Msg);
}
void NodeStatusWindow::Paint (HDC PaintDC, PAINTSTRUCT&)
{
HDC hMemDC=CreateCompatibleDC (PaintDC);
// if (CXScreen == 800)
DispDIBitmap (PaintDC, 0, 0, "c:\\out\\back8_6.bmp");
// else if (CXScreen == 1024)
// DispDIBitmap (PaintDC, 0, 0, "c:\\ods\\back10_7.bmp");
// else if (CXScreen == 640)
// DispDIBitmap (PaintDC, 0, 0, "c:\\ods\\back6_4.bmp");
/* if(scadainf.NetAdapter && RTUMAXNUM>1) {
for (int i=1;i<=7;i++) {
if (HostNode[i-1].Use==TRUE) {
switch ((StatusCount+i)%3) {
case 0: SelectObject (hMemDC,hMan1);
break;
case 1: SelectObject (hMemDC,hMan2);
break;
case 2: SelectObject (hMemDC,hMan3);
break;
}
BitBlt (PaintDC, HostAPos[ResolutionMode].x+(i-1)*50, HostAPos[ResolutionMode].y, 32, 32, hMemDC, 0, 0, SRCCOPY);
}
}
for (i=8;i<=HOSTNODEMAXNUM;i++) {
if (HostNode[i-1].Use==TRUE) {
switch ((StatusCount+i)%3) {
case 0: SelectObject (hMemD
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?