Windows 显示设备的属性,共有下面几种:位图、画刷、字体、画笔、区域。如果要设置它们到当前设备里,就需要使用 SelectObject 函数,比如上面介绍的字体设置,就会用到这个函数。当你创建一个位图时,这时 Windows 就会在内存里分配一块内存空间,用来保存位图的数据。当你创建字体时,也会分配一块内存空间保存字体。如果程序只是分配,而不去删除,就会造成内存使用越来越多,最后导到 Windows 这幢大楼倒下来。如果你忘记删除它,就造成了内存泄漏。因此,当你创建显示设备资源时,一定要记得删除它们啊,否则运行你的程序越长,就导致系统不稳定。记得使用 DeleteObject 函数去删除它们,把占用的内存释放回去给系统。
函数 SelectObject 和 DeleteObject 声明如下:
WINGDIAPI HGDIOBJ WINAPI SelectObject(__in HDC hdc, __in HGDIOBJ h);
WINGDIAPI BOOL WINAPI DeleteObject( __in HGDIOBJ ho);
hDC 是当前设备的句柄。
h,ho 是设备对象,其实它就是内存的地址 。
调用这个函数的例子如下:
#001 //
#002 // 界面显示输出 .
#003 //
#004 //
#005 //
#006 void CCaiWinMsg::OnDraw(HDC hDC)
#007 {
#008  //
#009  std::wstring strShow(_T("C++ 窗口类的实现 ,2007-09-04"));
#010  
#011  // 设置输出字符串的颜色 .
#012  COLORREF crOld = SetTextColor(hDC,RGB(255,0,0));
#013 
#014  RECT rcText;    
#015  rcText.left = 10;
#016  rcText.top = 10;
#017  rcText.right = 300;
#018  rcText.bottom = 80;
#019 
#020  //创建黑色的画刷,
#021  HBRUSH hbrush = CreateSolidBrush(RGB(0, 0, 0));
#022 
#023  // 用黑色的画刷填充四边形的颜色 .
#024  FillRect(hDC,&rcText,hbrush);
#025 
#026  //删除画刷.
#027  DeleteObject(hbrush);
#028 
#029 
#030  rcText.left = 10;
#031  rcText.top = 10;
#032  rcText.right = 300;
#033  rcText.bottom = 40;
#034 
#035  // 显示字符串在四边形的中间位置 .
#036  DrawText(hDC,strShow.c_str(),(int)strShow.length(),&rcText,
#037         DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
#038 
#039 
#040  rcText.left = 10;
#041  rcText.top = 40;
#042  rcText.right = 300;
#043  rcText.bottom = 80;
#044  // 设置透明背景
#045  int nOldMode = SetBkMode(hDC,TRANSPARENT);
#046 
#047  // 设置新字体 .
#048  HGDIOBJ hOldFont = SelectObject(hDC,GetFont());
#049 
#050  // 显示字符串在四边形的中间位置 .
#051  DrawText(hDC,strShow.c_str(),(int)strShow.length(),&rcText,
#052         DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
#053 
#054  // 恢复原来的字体 .
#055  HGDIOBJ hFont = SelectObject(hDC,hOldFont);
#056  DeleteObject(hFont);
#057 
#058  // 恢复原来的模式 .
#059  SetBkMode(hDC,nOldMode);
#060 
#061  // 恢复原来的颜色 .
#062  SetTextColor(hDC,crOld);
#063 }

SelectObject和DeleteObject函数相关推荐

  1. Windows API一日一练(29)SelectObject和DeleteObject函数

    Windows 显示设备的属性,共有下面几种:位图.画刷.字体.画笔.区域.如果要设置它们到当前设备里,就需要使用 SelectObject 函数,比如上面介绍的字体设置,就会用到这个函数.当你创建一 ...

  2. Windows API一日一练 29 SelectObject和DeleteObject函数

    Windows 显示设备的属性,共有下面几种:位图.画刷.字体.画笔.区域.如果要设置它们到当前设备里,就需要使用 SelectObject 函数,比如上面介绍的字体设置,就会用到这个函数.当你创建一 ...

  3. SelectObject和DeleteObject 函数

    Windows显示设备的属性,共有下面几种:位图.画刷.字体.画笔.区域.如果要设置它们到当前设备里,就需要使用SelectObject函数,比如上面介绍的字体设置,就会用到这个函数.当你创建一个位图 ...

  4. SelectObject和DeleteObject

    Windows显示设备的属性有:位图.画刷.字体.画笔.区域. 如果要设置它们到当前设备里,就需要使用SelectObject函数,这时Windows会再内存里分配一块内存空间,用来保存数据.还要使用 ...

  5. php new object delete,DeleteObject()函数

    函数功能:该函数删除一个逻辑笔.画笔.字体.位图.区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了. DeleteObject函数原型 C 1 BOOLDelet ...

  6. Windows API一日一练(28-29)CreateFont SetRect SelectObject DeleteObject函数-用各种不同的字体并进行文字绘制并注意释放

    主目录传送门 https://blog.csdn.net/zb774095236/article/details/108291755 本次学习的源码模板下载: 1.百度云:https://pan.ba ...

  7. Windows API GDI(2) CreateCompatibleDC、CreateCompatibleBitmap、SelectObject和BitBlt函数

    CreateCompatibleDC 说明: The CreateCompatibleDC function creates a memory device context(DC) compatibl ...

  8. C 调用win32API画图函数示例

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Sele ...

  9. Attach()和Detach()函数

    一.Windows对象和MFC对象的区别? MFC对象实际上并没有把整个Windows对象都包装在其中. 对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口 ...

最新文章

  1. Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置
  2. idea安装golang插件(仅针对2017年之前的idea版本)
  3. HTML元素的ID和Name属性的区别[转]
  4. leetcode739 每日温度
  5. 域名解析服务之DNS查询类型
  6. 入门级图论算法:洪水填充算法
  7. java dom获取命名空间属性_java – 如何在XML DOM对象中添加命名空间前缀?
  8. asp.net 页面右下角弹出类似QQ或MSN的消息提示
  9. Java Socket文件上传
  10. 简析 __init__、__new__、__call__ 方法
  11. java 全局唯一id_JAVA生成全局唯一ID 使用 java.util.UUID
  12. Windows下搭建GCC + Eclipse + OpenOCD的ARM开发环境
  13. 网络安全篇 全局ACL与URPF-12
  14. ubuntu20.04修改登录背景(十分详细)
  15. Excel表格快捷键的另类用法。
  16. 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(约瑟夫环问题)
  17. 总结:MUSTer中的keypoint matching以及利用RANSAC去除outliers
  18. 有个漂亮女朋友是种怎样的体验?爬取知乎2.2亿的阅读量的话题
  19. 洛谷P1008 三连击
  20. APOllO服务器性能,HPE Apollo 4200 Gen9 服务器

热门文章

  1. python安装opencv问题解决
  2. Ghost超级技巧一家亲
  3. 计算机电源好坏判断,怎么判断电源的好坏啊?
  4. 996的大公司和965的小公司,你怎么选?
  5. 欧拉(Euler)定理
  6. 自定义NavigationBar的思路
  7. 什么是CISP-PTS?考什么?
  8. Java核心技术卷一
  9. 降龙十八掌-程序员篇
  10. nginx日志格式配置