MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 一个链表保存两个绘图的类,如何分别把他们取出来

一个链表保存两个绘图的类,如何分别把他们取出来

www.MyException.Cn  网友分享于:2013-02-21  浏览:3次
一个链表保存两个绘图的类,怎么分别把他们取出来
CObList list; 在DOC中定义


下面是这两个的类分别加进链表的代码


void CpenView::OnLButtonDown(XXXXXXX)  //鼠标函数
{

CpenDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

if(m_Type==1)//选择线
{     
Line=new CLine();
pDoc->list.AddTail(Line); //图元“线”加入链表
Line->Start(point);
Line->End(point);   
}
else
{
Ellipse=new CEllipse();
pDoc->list.AddTail(Ellipse); //图元“圆”加入链表
Ellipse->Start(point);
Ellipse->End(point);   
}

}



void CpenView::OnLButtonUp(XXXXXXX)  //鼠标函数
{
......
...

if(m_Type==1)//选择线
Line->End(point);  
else
Ellipse->End(point);  
...

}




void CpenView::OnDraw(CDC* pDC) //画图部分
{
    CpenDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);


CObList *p=&(GetDocument()->list);  //取得链表地址

POSITION pos =p->GetHeadPosition();  //链表头的位置

 while(pos)
{    
   if(m_Type==1)
    {
    CLine* mLine=(CLine*)p->GetNext(pos); //下一个指针
    mLine->DrawL(pDC);  
    }
    if(m_Type==2)
     { 
      CEllipse* mEllipse=(CEllipse*)p->GetNext(pos); 
     mEllipse->DrawE(pDC);  
      } 
 }
}
我画了几段线段后改为圆来画。
但是当鼠标敲下时,在已经画过直线的地方,居然刷的一下全部变成了圆!!!
我想做的是把圆和线分开 。而不是共用一个坐标记录。

------解决方案--------------------
list 里 应该 包括 类型。
------解决方案--------------------
你可以存入指针

所有的类型继承cshape

然后根据多态 来调用相关类型!

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有