wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Windows API一日一练 29 SelectObject和DeleteObject函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

Windows 显示设备的属性,共有下面几种:位图、画刷、字体、画笔、区域。如果要设置它们到当前设备里,就需要使用 SELEctObject 函数,比如上面介绍的字体设置,就会用到这个函数。当你创建一个位图时,这时 Windows 就会在内存里分配一块内存空间,用来保存位图的数据。当你创建字体时,也会分配一块内存空间保存字体。如果程序只是分配,而不去删除,就会造成内存使用越来越多,最后导到 Win
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 // 蔡军生  2007/09/01 QQ:9073204 深圳
#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));
#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));
#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(),
#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,
#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 }
 

分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow@H_618_427@

大佬总结

以上是大佬教程为你收集整理的Windows API一日一练 29 SelectObject和DeleteObject函数全部内容,希望文章能够帮你解决Windows API一日一练 29 SelectObject和DeleteObject函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。