一个链表保存两个绘图的类,怎么分别把他们取出来
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
然后根据多态 来调用相关类型!