VC编程控件类HTControl之CHTGDIManagerGDI资源管理类用法解析
编程 解析 用法 控件 vc 资源管理 HTControl
2023-06-13 09:15:41 时间
本文主要介绍了VC编程控件类HTControl的CHTGDIManagerGDI资源管理类用法,MFC提供的CBitmap类的LoadBitmap接口只能从EXE内部获取位图,但是很多情况下需要从EXE外部获取,CHTGDIManager类提供了从EXE外部获取位图的接口,使用方法如下:
m_hBmpBtnCloseNormal=m_HTGDIManager.GetBitmap(_T(".\\pic\\btn_close_normal.png"));
#if!defined(__CHTGDIMANAGER_H__) #define__CHTGDIMANAGER_H__ classAFX_CLASS_EXPORTCHTGDIManager { public: CHTGDIManager(void); ~CHTGDIManager(void); /**************************************************************************** |函数功能:从文件中获取位图| |输入参数:| |szPicPath:图片文件路径| |pRect:取图片的一部分NULL表示取整个图片| |输出参数:无| |返回值:成功返回位图句柄失败返回NULL| |说明:此类析构时会删除此位图,使用者不用删除| ****************************************************************************/ HBITMAPGetBitmap(TCHAR*szPicPath,RECT*pRect=NULL); /**************************************************************************** |函数功能:从资源中获取位图| |输入参数:| |iPicId:资源ID| |pRect:取图片的一部分NULL表示取整个图片| |输出参数:无| |返回值:成功返回位图句柄失败返回NULL| |说明:此类析构时会删除此位图,使用者不用删除| ****************************************************************************/ HBITMAPGetBitmap(intiPicId,RECT*pRect=NULL); /**************************************************************************** |函数功能:获取指定的字体| |输入参数:| |lHeight:字号| |lWeight:粗度| |szFaceName:字体名称| |bUnderline:是否带底横线| |bItalic:是否斜体| |输出参数:无| |返回值:成功返回字体句柄失败返回NULL| |说明:此类析构时会删除此字体,使用者不用删除| ****************************************************************************/ HFONTGetFont(longlHeight,longlWeight,TCHAR*szFaceName,BOOLbUnderline=FALSE,BOOLbItalic=FALSE); voidDeleteBitmap(HBITMAPhBitmap); voidDeleteAllBitmap(HBITMAPhBitmap); voidDeleteFont(HFONThFont); voidDeleteAllFont(HFONThFont); private: HBITMAP*m_hBitmap; HFONT*m_hFont; intm_iBitmapIndex; intm_iFontIndex; intm_iBitmapCount; intm_iFontCount; }; #endif//!__CHTGDIMANAGER_H__
MFC提供了各种GDI对象的封装类,许多习惯WIN32API开发的(SDK开发)可能并不喜欢使用这些类(反正我是不喜欢用,个人认为这些类封装的并不怎么好),而是习惯使用API直接创建,况且许多情况下需要直接使用这些GDI对象的句柄。GDI对象的撤销,GDI对象使用完成后是要撤销的,以防资源泄漏。CHTGDIManager在类析构时撤销了它所创建的所有GDI对象,使用者不需要撤销。
相关文章
- noip2018提高组初赛解析_noip小学组
- matlab 求矩阵秩,用MATLAB编程求矩阵的秩
- JavaApi高级编程(五)集合框架中Iterate迭代器的使用以及解析
- 【网络通讯开发系列】如何使用C语言编程通过UDP通讯解析域名
- 编程思想图书推荐,新手入门应该看些啥
- Java 基于 UDP 协议的 Socket 编程 —— 服务器端程序
- iOS开发 面向切面编程之 Aspects 源码解析
- Linux C编程:读取一行数据(linuxc读取行)
- Java并发编程之ReentrantLock源码解析详解编程语言
- Linux脚本编程指南:通往家园的桥梁(linux脚本之家)
- 增强Linux系统安全:实战编程技巧(linux安全编程)
- Linux编程之道:深入解析PDF(linux编程pdf)
- MySQL编程:解析完美的语法(mysql编程语法)
- Linux反汇编让编程更易上手(linux反汇编软件)
- MSSQL编程入门指南,轻松掌握数据库开发技能(mssql编程)
- Linux C开发培训:走向编程专家之路(linuxc开发培训)
- Ast解析MySql让编程更简单更有效率(ast解析mysql)
- c#socket编程udp客户端实现代码分享