Windows API一日一练 29 SelectObject和DeleteObject函数
发布时间:2020-12-14 02:34:37 所属栏目:Windows 来源:网络整理
导读:Windows 显示设备的属性,共有下面几种:位图、画刷、字体、画笔、区域。如果要设置它们到当前设备里,就需要使用 SelectObject 函数,比如上面介绍的字体设置,就会用到这个函数。当你创建一个位图时,这时 Windows 就会在内存里分配一块内存空间,用来保存
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Tesseract-OCR 3 04在Windows7 vs2013上编译过程
- windows-server-2008 – 内部AD域与互联网域
- 为Windows中的目录生成校验和
- windows-phone-8 – 在Windows Phone 8应用程序中序列化和反
- Windows – 将cygwin从一台机器移动到另一台机器时要复制什
- 从WinJS应用程序打开PDF文件
- windows-server-2008 – VPN用户的登录时间配额
- iis – 使用Microsoft.Web.Administration以编程方式安装SS
- 在简单的.NET Windows应用程序中将数据保存在何处?
- windows-server-2008-r2 – 测试Windows用户帐户而不实际登
推荐文章
站长推荐
- windows – 将文本文件过滤为新的文本文件
- unit-testing – 无法加载应用程序或执行命令’M
- 套接字 – 如何加速缓慢/滞后的Windows Phone 7(
- winapi – Windows中的CBT钩子……“CBT”代表什
- Windows Mobile应用程序的Windows组件(.NET Comp
- windows – 批处理文件提取字符串部分
- localhost – RawCap错误:“无法进入混杂模式(R
- 在WIndows 7中使用带有英特尔高清显卡的OpenCL入
- windows-phone-7 – MvvmCross本地化:在运行时切
- windows – 如何从Visual Studio Code的上下文菜
热点阅读