DeleteObject,该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。
基本信息中文名称
DeleteObject
函数原型
BOOL DeleteObject(HGDIOBJ hObject)
作 用
删除,释放系统资源
类 型
函数
基本定义函数功能:该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。
函数原型:BOOL DeleteObject(HGDIOBJ hObject);
参数hObject:逻辑笔、画笔、字体、位图、区域或者调色板的句柄。
返回值:成功,返回非零值;如果指定的句柄无效或者它已被选入设备上下文环境,则返回值为零。
注释:当一个绘画对象(如笔或画笔)当前被选入一个设备上下文环境时不要删除该对象。当一个调色板画笔被删除时,与该画笔相关的位图并不被删除,该图必须单独地删除。
Windows CE:当对象在当前被选入一个设备上下文环境时,DeleteObject函数返回错误。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib。
示例:
void CRingView::OnDraw(CDC* pDC)
{
CRingDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
PointArray& pointArray = pDoc->GetPointArray();
ColorArray& colorArray = pDoc->GetColorArray();
int iSize = (int)pointArray.GetSize();
for (int iIndex = 0; iIndex<iSize; ++iIndex)
{
CPoint point = pointArray[iIndex];
COLORREF color = colorArray[iIndex];
CPen pen(PS_SOLID,0,BLACK);
CBrush brush(color);
//将临时的CPen和CBrush选入DC,通过返回值保存原来的GDI对象
CPen* pOldPen = pDC->SelectObject(&pen);
CBrush* pOldBrush = pDC->SelectObject(&brush);
//使用含有pen和brush的DC进行画图
pDC->Ellipse(point.x-RADIUS,point.y-RADIUS,point.x+RADIUS,point.y+RADIUS);
//重新载入原来的GDI对象使得临时GDI对象不再被引用而可以销毁
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
//调用DeleteObject释放pen和brush的资源
pen.DeleteObject();
brush.DeleteObject();
}
}