毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

VC++数字逻辑电子仿真器设计 第7页

更新时间:2010-5-19:  来源:毕业论文
VC++数字逻辑电子仿真器设计 第7页
 //判断两个物件是否能连接
 //这两个物件分别由pNodeStart和pNodeCurrent指向
 //两个触点分别由startput和currentput标识 
 //若所指同一物件
 if(pNodeStart==pNodeCurrent)
 {
  MessageBox("连接错误!自身物件不能相互连接");
  return FALSE;
 }
 //输出直接结输出
 if(startput==Output_1 && currentput==Output_1)
 {
  MessageBox("连接错误!输出端不能相互连接");
  return FALSE;
 }
 //输入直接连接输入
 if( (startput==Input_1 || startput==Input_2)
  && (currentput==Input_1||currentput==Input_2) )
 {
  MessageBox("连接错误!输入端不能相互连接");
  return FALSE;
 }
 //循环连接
 if( (startput==Output_1)
  &&(currentput==Input_1||currentput==Input_2) )
 {
  if(pNodeCurrent->output1 ==pNodeStart)
  {
   MessageBox("连接错误!不能循环连接");
   return FALSE;
  }
 }
 if( (startput==Input_1||startput==Input_2)
  &&(currentput==Output_1) )
 {
  if(pNodeStart->output1 ==pNodeCurrent)
  {
   MessageBox("连接错误!不能循环连接");
   return FALSE;
  }
 }
 //如果以上情况都不发生,表示可以连接
 return TRUE;}
用图来表示上述几种错误:
同一元件不能连接图10输出端不能连接输出端
 图11输入端不能连接输入端
图12两个元件不能循环连接
 图13 两个元件的画图连接:LineLink()
该函数调用了recordLine()代码如下:
void CMyView::recordLine ()
{
//记录两个物件之间的连接线经过的关键点
//先动态生成一个数组CArray<CPoint,CPoint>之对象
//记录下连接线的关键点,然后将这个数组对象之地址加入到
//CList<CArray<CPoint,CPoint>*,CArray<CPoint,CPoint>*> MyPointList中
 int x0,y0,x1,y1,delta_x,delta_y;
 //(x0,y0)用于记录输出端起始点坐标
 //(x1,y1)用于记录输入端终点坐标
 //delta_x,delta_y用于记录x和y的偏移量

 //一定是从输出端向输入端画线
 if(startput==Output_1)
 {

  x0=startpoint.x;
  y0=startpoint.y;
  x1=currentpoint.x;
  y1=currentpoint.y;
 }
 else
 {
  x1=startpoint.x;
  y1=startpoint.y;
  x0=currentpoint.x;  y0=currentpoint.y;
 }
 delta_x=5;
 //动态生成数组对象
 CArray<CPoint,CPoint>* pPointArray=new CArray<CPoint,CPoint>;

 //根据点的位置分为三种情况:2个点,4个点,5个点
 if(x0<x1)
 {
  if(y0==y1)
  {
   //两个点情况
   
   pPointArray->Add (CPoint(x0,y0));
   pPointArray->Add (CPoint(x1,y1));
  }
  else
  {
   //4个点情况
   pPointArray->Add (CPoint(x0,y0));
   pPointArray->Add (CPoint(x0+delta_x,y0));
   pPointArray->Add (CPoint(x0+delta_x,y1));
   pPointArray->Add (CPoint(x1,y1));
  }
 }
 else if(x0==x1)
 {
  //两个点情况
   pPointArray->Add (CPoint(x0,y0));
   pPointArray->Add (CPoint(x1,y1));
 }
 else //x0>x1
 {
  //5个点情况
  if(y0<y1)
  {
   delta_y=20;
  }
  else
  {
   delta_y=-20;
  }
  pPointArray->Add (CPoint(x0,y0));
  pPointArray->Add (CPoint(x0,y0+delta_y));
  pPointArray->Add (CPoint(x1-delta_x,y0+delta_y));
  pPointArray->Add (CPoint(x1-delta_x,y1));
  pPointArray->Add (CPoint(x1,y1));
 }
 //加入当前数组对象地址到MyPointList
 MyPointList.AddTail (pPointArray);
 //用数组中的点画线
 DrawLinkLine(pPointArray);}
首先保证从输出端向输入端画线,这样可以统一画线操作。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页

VC++数字逻辑电子仿真器设计 第7页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。