大家好,怎么样在Drawli Sample中如何使用已经存在的一个点数组,产生一个polygon,添加到document中去,我用下面的代码产生了一个CDrawPoly,添加成功,但是无法画出来,在pObj->Draw(pDC)的时候出错。    int nPoints;
    CDrawTool::c_drawShape = poly;
CDrawPoly* pPoly;
CPoint m_Point;
m_Point.x=-40;
m_Point.y=461;
pPoly = new CDrawPoly(CRect(m_Point, CSize(0, 0)));

    pPoly->AddPoint(m_Point,this);
    m_Point.x=338;
    m_Point.y=354;
    pPoly->AddPoint(m_Point,this);
    m_Point.x=245;
    m_Point.y=42;
    pPoly->AddPoint(m_Point,this);    GetDocument()->Add(pPoly);
    delete pPoly;  but I just can not draw the polygon.
when I trace the code in the 
void CDrawDoc::Draw(CDC* pDC, CDrawView* pView)
{
POSITION pos = m_objects.GetHeadPosition(); while (pos != NULL)
{
CDrawObj* pObj = m_objects.GetNext(pos);

pObj->Draw(pDC);
   //我发现我添加的classname of pObj不是CDrawPoly,而是CDrawObj,所以产生错误。而用手工画的polygon,这里的pObj是CDrawPoly。
   
if (pView->m_bActive && !pDC->IsPrinting() && pView->IsSelected(pObj))
pObj->DrawTracker(pDC, CDrawObj::selected);
}
}

解决方案 »

  1.   

    我的代码跟你差不多啊,这样吧,你把你的代码发到我的信箱,[email protected],我下午帮你看看
      

  2.   

    已经发出,我顺便也帖在这里,就是添加了一个test菜单,对于ontest方法,如下
    oid CDrawView::Ontest() 
    {
    // TODO: Add your command handler code here
    //用来测试一些数据
    int nPoints;
        CDrawTool::c_drawShape = poly;
    CDrawPoly* pPoly; CPoint m_Point;
    m_Point.x=-40;
    m_Point.y=461;
    pPoly = new CDrawPoly(CRect(m_Point, CSize(0, 0)));
    //if (pPoly->IsKindOf(RUNTIME_CLASS(CDrawPoly))) {
    //AfxMessageBox("OK");
    //}
        pPoly->AddPoint(m_Point); m_Point.x=338;
    m_Point.y=354;
        pPoly->AddPoint(m_Point); m_Point.x=245;
    m_Point.y=42;
        pPoly->AddPoint(m_Point);

      GetDocument()->Add(pPoly);
       delete pPoly;}
      

  3.   

    没收到啊另外
    pPoly = new CDrawPoly(CRect(m_Point, CSize(0, 0)));
    这一句后面是不是要加上
    pPoly->m_pDocument = GetDocument();
      

  4.   

    我加了,但是还是出错的说
    我把代码瘦身,又发给您一遍
    可以给我一个您的MSN什么的吗?
    多谢了。