CPoint point1,point2;
CPen pen;
CPen * pOldPen=NULL;
// pen.CreatePen(PS_SOLID,1,RGB(0,0,192));
if(!(m_ConnectInterface.GetCount()==0)) return;
point1.y=point2.y=m_InterfaceRect.top+(int)(m_InterfaceRect.Height()/2);
if (m_nInterfaceType == 0) //画左边接口
{
point1.x = m_InterfaceRect.left;
point2.x = point1.x-10;
pen.CreatePen(PS_SOLID,1,RGB(0,0,192));
pOldPen=pDC->SelectObject(&pen);
//画圆
pDC->Ellipse(point2.x - 4,point2.y - 2, point2.x, point2.y + 2);
pDC->SelectObject(pOldPen);
//画接口线
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 192));
pDC->SelectObject(&pen);
pDC->MoveTo(point1);
pDC->LineTo(point2);
pDC->SelectObject(pOldPen);
pen.DeleteObject();
}
else //画右边接口
{
point1.x=m_InterfaceRect.right;
point2.x=point1.x+10;
pen.CreatePen(PS_SOLID,1,RGB(192,0,192));
pOldPen=pDC->SelectObject(&pen);
//画圆
pDC->Ellipse(point2.x, point2.y - 2, point2.x + 4, point2.y + 2);
pDC->SelectObject(pOldPen);
//画接口线
//::DeleteObject(pen.Detach());
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 2, RGB(192, 0, 192));
pDC->SelectObject(&pen);
pDC->MoveTo(point1);
pDC->LineTo(point2); pDC->SelectObject(pOldPen);
pen.DeleteObject();
}
在程序运行时调用该函数时会导致资源不足
请问是哪里没有释放吗??
3x!!!
CPen pen;
CPen * pOldPen=NULL;
// pen.CreatePen(PS_SOLID,1,RGB(0,0,192));
if(!(m_ConnectInterface.GetCount()==0)) return;
point1.y=point2.y=m_InterfaceRect.top+(int)(m_InterfaceRect.Height()/2);
if (m_nInterfaceType == 0) //画左边接口
{
point1.x = m_InterfaceRect.left;
point2.x = point1.x-10;
pen.CreatePen(PS_SOLID,1,RGB(0,0,192));
pOldPen=pDC->SelectObject(&pen);
//画圆
pDC->Ellipse(point2.x - 4,point2.y - 2, point2.x, point2.y + 2);
pDC->SelectObject(pOldPen);
//画接口线
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 192));
pDC->SelectObject(&pen);
pDC->MoveTo(point1);
pDC->LineTo(point2);
pDC->SelectObject(pOldPen);
pen.DeleteObject();
}
else //画右边接口
{
point1.x=m_InterfaceRect.right;
point2.x=point1.x+10;
pen.CreatePen(PS_SOLID,1,RGB(192,0,192));
pOldPen=pDC->SelectObject(&pen);
//画圆
pDC->Ellipse(point2.x, point2.y - 2, point2.x + 4, point2.y + 2);
pDC->SelectObject(pOldPen);
//画接口线
//::DeleteObject(pen.Detach());
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 2, RGB(192, 0, 192));
pDC->SelectObject(&pen);
pDC->MoveTo(point1);
pDC->LineTo(point2); pDC->SelectObject(pOldPen);
pen.DeleteObject();
}
在程序运行时调用该函数时会导致资源不足
请问是哪里没有释放吗??
3x!!!
先把它指向另一个对象—通常是原先的对象。
d c . S e l e c t O b j e c t ( p O l d P e n ) ; // select another object
p e n . D e l e t e O b j e c t ( ) ; // deletes Pen object (returning
// destroys the CPen object)
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 192));
pDC->SelectObject(&pen);
pDC->MoveTo(point1);
pDC->LineTo(point2);
pDC->SelectObject(pOldPen);
pen.DeleteObject(); 问题就在上面代码中,应该这么写:
//画接口线
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 192));
pOldPen = pDC->SelectObject(&pen); //这里,看清楚了。
pDC->MoveTo(point1);
pDC->LineTo(point2);
pDC->SelectObject(pOldPen);
pen.DeleteObject();
else里面有同样的问题。