首页 > 编程 > C > 正文

VC编程控件类HTControl之CHTGDIManager GDI资源管理类用法解析

2020-01-26 15:25:13
字体:
来源:转载
供稿:网友

本文主要介绍了VC编程控件类HTControl的CHTGDIManager GDI资源管理类用法,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__class AFX_CLASS_EXPORT CHTGDIManager{public: CHTGDIManager(void); ~CHTGDIManager(void);/****************************************************************************| 函数功能:从文件中获取位图                        || 输入参数:                                || szPicPath: 图片文件路径                          || pRect: 取图片的一部分 NULL表示取整个图片                 || 输出参数:无                               || 返回值: 成功返回位图句柄 失败返回NULL                 || 说  明:此类析构时会删除此位图,使用者不用删除             |****************************************************************************/HBITMAP GetBitmap(TCHAR* szPicPath, RECT* pRect = NULL);/****************************************************************************| 函数功能:从资源中获取位图                        || 输入参数:                                || iPicId: 资源ID                              || pRect: 取图片的一部分 NULL表示取整个图片                 || 输出参数:无                               || 返回值: 成功返回位图句柄 失败返回NULL                 || 说  明:此类析构时会删除此位图,使用者不用删除             |****************************************************************************/HBITMAP GetBitmap(int iPicId, RECT* pRect = NULL);/****************************************************************************| 函数功能:获取指定的字体                         || 输入参数:                                || lHeight:字号                               || lWeight: 粗度                               || szFaceName: 字体名称                           || bUnderline: 是否带底横线                         || bItalic: 是否斜体                            || 输出参数:无                               || 返回值: 成功返回字体句柄 失败返回NULL                 || 说  明:此类析构时会删除此字体,使用者不用删除             |****************************************************************************/HFONT GetFont(long lHeight, long lWeight, TCHAR* szFaceName, BOOL bUnderline = FALSE, BOOL bItalic = FALSE); void DeleteBitmap(HBITMAP hBitmap); void DeleteAllBitmap(HBITMAP hBitmap); void DeleteFont(HFONT hFont); void DeleteAllFont(HFONT hFont);private: HBITMAP* m_hBitmap; HFONT* m_hFont; int m_iBitmapIndex; int m_iFontIndex; int m_iBitmapCount; int m_iFontCount;};#endif //!__CHTGDIMANAGER_H__

MFC提供了各种GDI对象的封装类,许多习惯WIN32 API 开发的(SDK开发)可能并不喜欢使用这些类(反正我是不喜欢用,个人认为这些类封装的并不怎么好),而是习惯使用API直接创建,况且许多情况下需要直接使用这些GDI对象的句柄。GDI对象的撤销,GDI对象使用完成后是要撤销的,以防资源泄漏。CHTGDIManager在类析构时撤销了它所创建的所有GDI对象,使用者不需要撤销。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选