大家好,怎么样在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);
}
}
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);
}
}
解决方案 »
- 我写了一个图像控件的类 大家帮我看看 怎么办
- 大家好,请问有操作IC卡的资料吗(读IC卡和写IC卡),谢谢
- 请教专家:对每隔1ms一次的高速数据如何绘制曲线[需要实时存储数据和曲线的实时刷新]
- 系统调用了openprocess我们如何才能知道系统是想打开哪一个进程,我们如何获取这个进程的ID
- 迅雷 电驴等列表框中下载速度 无闪烁的效果是怎么实现的?
- 我想在我的应用程序里改变鼠标形状,该怎么做?
- 如何从一个类中获得另一类的成员变量的值
- 怎么样将文件独占改成文件共享?(我每次都结分的.)
- 请问一下,有很多窗体中的控件都有平面效果,这是如何做的?????
- MFC中如何隐藏子窗体
- 在窗口分割时,如何固定分割线?
- 一个关于如何从电子信箱和传真机连接的问题
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;}
pPoly = new CDrawPoly(CRect(m_Point, CSize(0, 0)));
这一句后面是不是要加上
pPoly->m_pDocument = GetDocument();
我把代码瘦身,又发给您一遍
可以给我一个您的MSN什么的吗?
多谢了。