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,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 }
分享到:
相关推荐
《Windows API 一日一练(93练)》是一份专为学习Windows操作系统编程的实践教程,涵盖了93个不同的练习题目,旨在帮助开发者深入理解并熟练掌握Windows API的使用。Windows API是Microsoft Windows操作系统的核心组件...
Windows API(Application Programming Interface)是Microsoft Windows操作系统提供的一系列标准函数和过程,用于开发应用程序,特别是桌面应用软件。通过学习Windows API,开发者可以深入理解Windows操作系统的...
《Windows API 一日一练》是一份非常实用的学习资源,主要针对初学者,旨在通过每日实践来提升对Windows API的理解和应用能力。Windows API是微软操作系统的核心接口,它提供了丰富的函数和结构,允许程序员直接控制...
《精通Windows API函数接口编程实例源代码》是一个深入学习Windows API编程的重要资源,它涵盖了大量实践案例,旨在帮助开发者熟练掌握API接口的使用技巧。Windows API是微软为开发者提供的一个平台,通过它,程序员...
Windows API(Application Programming Interface)是微软为开发者提供的一个庞大的函数库,它包含了各种与操作系统交互的函数,使得程序员能够创建能在Windows操作系统上运行的应用程序。API函数覆盖了从图形用户...
在计算机编程领域,Windows API(应用程序接口)是微软操作系统提供给开发者的一组预先定义的函数、常量、数据类型和宏,使得程序员可以利用Windows操作系统提供的功能进行开发。Windows API函数大全是程序员的重要...
在"Windows API 一日一练"中,我们可以期待一系列的练习来帮助我们逐步理解并应用这些API。这种日积月累的学习方式有助于巩固基础,逐步提高编程技能。每天的练习可能包括创建简单的窗口程序、响应用户输入、使用GDI...
Windows API编程是开发Windows应用程序的核心技术,它提供了一系列的函数接口,使得程序员可以与操作系统进行交互,实现各种功能。在Windows系统中,这些接口主要由Win32 API组成,它是微软为开发者提供的一个广泛而...
通过CreateDC、SelectObject和DeleteObject等函数,开发者可以创建设备上下文,选择笔、刷和字体,然后使用DrawText、MoveToEx和LineTo等函数绘制文本、线条和图形。 文件操作是任何程序都离不开的部分。CreateFile...
在Windows操作系统中,API(应用程序接口)是一组预先定义的函数、常量、结构体和其他编程元素,供开发者使用以实现各种系统级别的功能。"WINDOWS api 函数大全" 是一个全面收集了Windows API函数的资源,它对于进行...
Windows API(应用程序编程接口)是微软为开发者提供的一组接口函数,用于构建在Windows操作系统上的应用程序。这些函数涵盖了从基本的文件操作到复杂的图形绘制、网络通信和硬件交互等多个方面。下面将根据标题和...
这个压缩包“windows_API.rar”包含了丰富的API函数资料,帮助开发者深入理解和使用这些函数。 API函数是Windows系统的核心组成部分,它们提供了对操作系统功能的直接访问,包括窗口管理、图形绘制、文件操作、网络...
《Windows C++ API函数大全》是一本专注于Windows操作系统下C++编程的重要参考资料,它涵盖了大量用于与Windows系统交互的API函数。Windows API是Microsoft Windows操作系统提供的一系列函数库,为开发者提供了控制...
Windows API 提供了一系列函数来创建、显示、隐藏、移动和销毁窗口。例如,`CreateWindowEx`函数用于创建一个新的窗口,`ShowWindow`控制窗口的可见性,`MoveWindow`用于调整窗口的位置和大小,而`DestroyWindow`则...
Windows API是微软操作系统提供的一系列函数和接口,用于开发者创建应用程序。这些API使得开发者能够访问系统资源,控制硬件,管理用户界面,以及实现各种复杂的系统功能。本压缩包中的"windows api开发详解--函数、...
Windows API 提供了打印支持,`CreateDC` 可以创建打印机设备上下文,`StartDoc` 和 `EndDoc` 定义打印作业,`StartPage` 和 `EndPage` 表示开始和结束一页,`TextOut` 和 `ExtTextOut` 用于在打印页面上输出文本。...
学习和掌握Windows API函数是成为Windows平台开发者的必经之路,这不仅能够帮助我们理解和控制操作系统的行为,还能使我们编写出更高效、更稳定的应用程序。通过“API函数详细说明库”,开发者可以深入理解每个函数...
- 这一部分包含处理Windows消息的函数,如`TranslateMessage`将键盘输入转换为消息,`DispatchMessage`分发消息到相应窗口过程进行处理,以及`PostMessage`和`SendMessage`异步和同步发送消息给窗口。 3. **API之...
API函数提供了一种方式,使得VB程序能够执行操作系统级别的任务,这些任务通常超出了VB内置函数的能力范围。本帮助文件包含了774个Windows API函数,覆盖了从基本操作到高级功能的广泛领域。 API函数主要分为十二大...
首先,Windows API(应用程序接口)是一组预先定义的函数,由Microsoft提供,供程序员在编写Windows应用程序时使用。这些函数以动态链接库(DLL)的形式存在,如kernel32.dll、user32.dll和gdi32.dll等。C++与...