zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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对象,使用者不需要撤销。