📄 plcview.cpp
字号:
{
lad[TotalLad].m_Kind[VorInd]=0;
lad[TotalLad].m_Name[VorInd]=0;
lad[TotalLad].m_Code[VorInd]=0;
lad[TotalLad].m_Para[VorInd]=0;
lad[TotalLad].m_Branch[VorInd]=0;
VorInd=VorInd+1;
}
SetScrollPos(SB_VERT, 50*CurrLadH-PageLeng-50, TRUE);
}
IsLadModi='Y';//'Y'表梯形图被修改了
PCusor.x=8+38*CurrLadV; PCusor.y=50*CurrLadH;
Invalidate();
}
//----------------------------------------------------------------------------
void CPLCView::OnDeletepart()
{
// TODO: Add your command handler code here
if(FaceKind!='T') {return;}//'T'表示梯形图;'I'表示指令;'L'逻辑测试
lad[CurrLadH].m_Kind[CurrLadV]=0;
lad[CurrLadH].m_Name[CurrLadV]=0;
lad[CurrLadH].m_Code[CurrLadV]=0;
lad[CurrLadH].m_Para[CurrLadV]=0;
IsLadModi='Y';//'Y'表梯形图被修改了
Invalidate();
}
//----------------------------------------------------------------------------
void CPLCView::OnDeletever()
{
// TODO: Add your command handler code here
if(FaceKind!='T') {return;}//'T'表示梯形图;'I'表示指令;'L'逻辑测试
if(lad[CurrLadH].m_Branch[CurrLadV]!=0)
{
lad[CurrLadH].m_Branch[CurrLadV]=0;
IsLadModi='Y';//'Y'表梯形图被修改了
Invalidate();
}
}
//----------------------------------------------------------------------------
void CPLCView::OnDeleteline()
{
// TODO: Add your command handler code here
if(FaceKind=='T') //'T'表示梯形图;'I'表示指令;'L'逻辑测试
{
lad[CurrLadH].m_Kind[CurrLadV]=0;
lad[CurrLadH].m_Name[CurrLadV]=0;
lad[CurrLadH].m_Code[CurrLadV]=0;
lad[CurrLadH].m_Para[CurrLadV]=0;
lad[CurrLadH].m_Branch[CurrLadV]=0;
if((TotalLad<=0)||(CurrLadH==TotalLad)) {Invalidate(); return;}
TotalLad=TotalLad-1;
int index=CurrLadH;
while(index<=TotalLad)
{
char VorInd=0;
while(VorInd<16)
{
lad[index].m_Kind[VorInd]=lad[index+1].m_Kind[VorInd];
lad[index].m_Name[VorInd]=lad[index+1].m_Name[VorInd];
lad[index].m_Code[VorInd]=lad[index+1].m_Code[VorInd];
lad[index].m_Para[VorInd]=lad[index+1].m_Para[VorInd];
lad[index].m_Branch[VorInd]=lad[index+1].m_Branch[VorInd];
VorInd=VorInd+1;
}
index=index+1;
}
IsLadModi='Y';//'Y'表梯形图被修改了
}
else if(FaceKind=='I')
{
if(TotalLine>1)
{
short dh=CurrLine;
while(dh<=TotalLine) {Instruct[dh]=Instruct[dh+1]; dh=dh+1;}
TotalLine=TotalLine-1;
}
else if(TotalLine==1)
{
Instruct[CurrLine].Order=0;
Instruct[CurrLine].Name=0;
Instruct[CurrLine].Code=0;
Instruct[CurrLine].Para=0;
}
IsPlcModi='Y';//'Y'表指令表被修改了
}
else {return;}
Invalidate();
}
//----------------------------------------------------------------------------
void CPLCView::OnInsertline()
{
// TODO: Add your command handler code here
if(FaceKind=='T') //'T'表示梯形图;'I'表示指令;'L'逻辑测试
{
if(CurrLadH>1000) {return;}
TotalLad=TotalLad+1;
int index=TotalLad;
char VorInd=0;
while((index>CurrLadH)&&(index>0))
{
VorInd=0;
while(VorInd<16)
{
lad[index].m_Kind[VorInd]=lad[index-1].m_Kind[VorInd];
lad[index].m_Name[VorInd]=lad[index-1].m_Name[VorInd];
lad[index].m_Code[VorInd]=lad[index-1].m_Code[VorInd];
lad[index].m_Para[VorInd]=lad[index-1].m_Para[VorInd];
lad[index].m_Branch[VorInd]=lad[index-1].m_Branch[VorInd];
VorInd=VorInd+1;
}
index=index-1;
}
VorInd=0;
while(VorInd<16)
{
lad[CurrLadH].m_Kind[VorInd]=0;
lad[CurrLadH].m_Name[VorInd]=0;
lad[CurrLadH].m_Code[VorInd]=0;
lad[CurrLadH].m_Para[VorInd]=0;
lad[CurrLadH].m_Branch[VorInd]=0;
VorInd=VorInd+1;
}
IsLadModi='Y';//'Y'表梯形图被修改了
}
else if(FaceKind=='I')
{
if(TotalLine<1000)
{
short dh=TotalLine;
while(dh>=CurrLine) {Instruct[dh+1]=Instruct[dh]; dh=dh-1;}
TotalLine=TotalLine+1;
Instruct[CurrLine].Order=0;
Instruct[CurrLine].Name=0;
Instruct[CurrLine].Code=0;
Instruct[CurrLine].Para=0;
IsPlcModi='Y';//'Y'表指令表被修改了
}
}
else {return;}
Invalidate();
}
//------------------------------------------------------------------------------------
void CPLCView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
switch(nChar)
{
case VK_RETURN: //响应RETURN键
{
if(FaceKind=='I')
{
OnEditline();//编辑一行
}
else if(FaceKind=='T')
{
if((lad[CurrLadH].m_Kind[CurrLadV]<=1)||(lad[CurrLadH].m_Kind[CurrLadV]>6))
{return;}
PartKind=lad[CurrLadH].m_Kind[CurrLadV];
partName=lad[CurrLadH].m_Name[CurrLadV];
PartCode=lad[CurrLadH].m_Code[CurrLadV];
Partpara=lad[CurrLadH].m_Para[CurrLadV];
EnterCancel='C';
Cinputpart m_inputpart;
m_inputpart.DoModal();
if(EnterCancel!='E') {return;}
char VorInd;
if(PartKind>=4)
{
VorInd=CurrLadV;
while(VorInd<15)
{
if(lad[CurrLadH].m_Kind[VorInd]==0)
{lad[CurrLadH].m_Kind[VorInd]=1;}
VorInd=VorInd+1;
}
lad[CurrLadH].m_Kind[15]=PartKind;
lad[CurrLadH].m_Name[15]=partName;
lad[CurrLadH].m_Code[15]=PartCode;
lad[CurrLadH].m_Para[15]=Partpara;
lad[CurrLadH].m_Branch[15]=0;
CurrLadH=CurrLadH+1;
CurrLadV=0;
}
else
{
lad[CurrLadH].m_Kind[CurrLadV]=PartKind;
lad[CurrLadH].m_Name[CurrLadV]=partName;
lad[CurrLadH].m_Code[CurrLadV]=PartCode;
lad[CurrLadH].m_Para[CurrLadV]=Partpara;
CurrLadV=CurrLadV+1;
}
if(TotalLad<(CurrLadH+1))
{
TotalLad=(CurrLadH+1);
VorInd=0;
while(VorInd<16)
{
lad[TotalLad].m_Kind[VorInd]=0;
lad[TotalLad].m_Name[VorInd]=0;
lad[TotalLad].m_Code[VorInd]=0;
lad[TotalLad].m_Para[VorInd]=0;
lad[TotalLad].m_Branch[VorInd]=0;
VorInd=VorInd+1;
}
SetScrollPos(SB_VERT, 50*CurrLadH-PageLeng-50, TRUE);
}
IsLadModi='Y';//'Y'表梯形图被修改了
PCusor.x=8+38*CurrLadV; PCusor.y=50*CurrLadH;
Invalidate();
}
break;
}
case VK_HOME: //响应HOME键
{
if(FaceKind=='T')
{
CClientDC dc(this);
OnPrepareDC(&dc);
CDC *pDC=GetDC();
pDC->SelectObject(&pen);
pDC->SetROP2(R2_NOT);
dc.LPtoDP(&PCusor);
pDC->MoveTo(PCusor.x, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y);
CurrLadH=0;
PCusor.x=8+38*CurrLadV; PCusor.y=50*CurrLadH;
dc.LPtoDP(&PCusor);
pDC->MoveTo(PCusor.x, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y);
PCusor.x=8+38*CurrLadV; PCusor.y=50*CurrLadH;
OnVScroll(SB_TOP,0,NULL);
}
else if(FaceKind=='I')
{
//CurrLine=0;
OnVScroll(SB_TOP,0,NULL);
}
break;
}
case VK_END: //响应END键
{
if(FaceKind=='T')
{
CClientDC dc(this);
OnPrepareDC(&dc);
CDC *pDC=GetDC();
pDC->SelectObject(&pen);
pDC->SetROP2(R2_NOT);
dc.LPtoDP(&PCusor);
pDC->MoveTo(PCusor.x, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y);
CurrLadH=TotalLad;
PCusor.x=8+38*CurrLadV; PCusor.y=50*CurrLadH;
dc.LPtoDP(&PCusor);
pDC->MoveTo(PCusor.x, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y+50);
pDC->LineTo(PCusor.x+38, PCusor.y);
pDC->LineTo(PCusor.x, PCusor.y);
PCusor.x=8+38*CurrLadV; PCusor.y=50*CurrLadH;
OnVScroll(SB_THUMBTRACK,PCusor.y-PageLeng,NULL);
}
else if(FaceKind=='I')
{
//CurrLine=TotalLine-1;
OnVScroll(SB_THUMBTRACK,25*CurrLine,NULL);
}
break;
}
case VK_LEFT: //响应LEFT键
{
if(FaceKind=='T')
{
if((CurrLadH==0)&&(CurrLadV==0)) {return;}
CClientDC dc(this);
OnPrepareDC(&dc);
CDC *pDC=GetDC();
pDC->SelectObject(&pen);
pDC->SetROP2(R2_NOT);
dc.LPtoDP(&PCusor);
pDC->MoveTo(PCusor.x,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -