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();

}

}

内存管理(15)——UI(20)——DeleteObject相关推荐

  1. Android面试系列文章2018之内存管理之UI卡顿篇

    Android面试系列文章2018之内存管理之UI卡顿篇 1.UI卡顿的原理   60ftp –> 16ms: Android系统每隔16ms都会对界面进行渲染一次,造成卡顿的原因就是Andro ...

  2. linux 内存管理(15) - mmap

    了解mmap机制.参考此处 1.概述   mmap 即地址的映射, 是一种内存映射文件的方法,将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系 ...

  3. [C] 动态内存管理

    目录 为何存在内存管理 动态内存函数 malloc free calloc realloc 常见错误 C/C++程序的内存开辟 柔性数组 使用 特点 动态内存管理是指在程序执行的过程中动态地分配或者回 ...

  4. 内存分段分页机制理解_深度干货 | 真棒! 20 张图揭开内存管理的迷雾,瞬间豁然开朗...

    openEA开源周刊 openEA开源社区的官方运营载体 这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧! 摘要:本篇跟大家说说内存管理,内存管理还是比较重要的一个 ...

  5. 操作系统概念学习笔记 15 内存管理(一)

    操作系统概念学习笔记 15 内存管理(一) 背景 内存是现代计算机运行的中心.内存有非常大一组字或字节组成,每一个字或字节都有它们自己的地址.CPU依据程序计数器(PC)的值从内存中提取指令.这些指令 ...

  6. 20 张图揭开内存管理的迷雾,瞬间豁然开朗

    每日英语,每天进步一点点 前言 之前有不少读者跟我反馈,能不能写图解操作系统? 既然那么多读者想看,我最近就在疯狂的复习操作系统的知识. 操作系统确实是比较难啃的一门课,至少我认为比计算机网络难太多了 ...

  7. 真棒!20 张图揭开内存管理的迷雾

    来源 | 小林coding(ID:CodingLin) 有不少读者跟我反馈,能不能写图解操作系统? 既然那么多读者想看,我最近就在疯狂的复习操作系统的知识. 操作系统确实是比较难啃的一门课,至少我认为 ...

  8. go 1.20 手动内存管理arena

    go1.20新特性,手动内存管理 测试特性安装go1.20rc go install golang.org/dl/go1.20rc1@latest go1.20rc1 download 使用go1.2 ...

  9. 20 张图揭开「内存管理」的迷雾,瞬间豁然开朗

    每日英语,每天进步一点点 前言 之前有不少读者跟我反馈,能不能写图解操作系统? 既然那么多读者想看,我最近就在疯狂的复习操作系统的知识. 操作系统确实是比较难啃的一门课,至少我认为比计算机网络难太多了 ...

最新文章

  1. Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】
  2. 五、【线性表】线性表的链式表示和实现
  3. object-c html,object.html
  4. Spring MVC--接收JSON格式的数据
  5. android xml获取指定,android:如何从xml文件中获取信息?
  6. [转帖]2015年时微软Win3.1崩溃迫使巴黎奥利机场短暂关闭
  7. 【BZOJ4710】[JSOI2011]分特产(容斥)
  8. 敏捷开发一千零一问系列之五:怎样让队员主动要活?
  9. 论文笔记_S2D.20_2017-ICCV-从单张RGB图像到精确尺度深度图评估的一种双支网络
  10. chrome安装测试打包插件
  11. F28335中断系统
  12. Socket编程面试题
  13. 计算机顶级水平,2009年的顶级电脑配置, 相当于中国现在电脑的什么水平?
  14. 概念数据模型(CDM)、逻辑数据模型(LDM)、物理数据模型(PDM)区别以及哪些适合需求分析阶段的数据建模
  15. woocommerce 新增一个订单状态
  16. Unity.TimeLine
  17. 大自然的印钞机农夫山泉是如何干过一群互联网与电商大佬的
  18. 用纯css实现优雅的tab页,纯CSS实现Tab页切换效果的方法
  19. w锋ndows用户组设置,第2章Wndows+Server+2008本地用户和组.ppt
  20. 板绘技巧:水晶怎么画?如何画出晶莹剔透的效果?

热门文章

  1. 用python写名片管理系统
  2. 云计算时代催生下一代网络变革-软件定义的网络之技术架构篇
  3. linux编辑pdf文件内容,PDF修改文字的步骤
  4. 双精度改单精度c语言程序,C语言菜鸟基础教程之单精度浮点数与双精度浮点数...
  5. IDEA 解决 artifacts not found 问题
  6. 如何让你的内网服务器可以被外网访问到(端口映射、NAT、域名解析、IP地址)
  7. qt中,如何用QLabel显示一个变量!
  8. ? .和? ?运算符
  9. 04 高性能网络设计专栏-网络编程
  10. 自制IDEAWebStorm主题,轻仿VsCode-One Dark Pro