⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plcview.cpp

📁 可以编辑PLC梯形图
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		{
			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 + -