本文主要介紹了VC編程控件類HTControl的CHTGDIManager GDI資源管理類用法,MFC提供的CBitmap類的LoadBitmap接口只能從EXE內(nèi)部獲取位圖,但是很多情況下需要從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);/****************************************************************************| 函數(shù)功能:從文件中獲取位圖 || 輸入?yún)?shù): || szPicPath: 圖片文件路徑 || pRect: 取圖片的一部分 NULL表示取整個(gè)圖片 || 輸出參數(shù):無(wú) || 返回值: 成功返回位圖句柄 失敗返回NULL || 說 明:此類析構(gòu)時(shí)會(huì)刪除此位圖,使用者不用刪除 |****************************************************************************/HBITMAP GetBitmap(TCHAR* szPicPath, RECT* pRect = NULL);/****************************************************************************| 函數(shù)功能:從資源中獲取位圖 || 輸入?yún)?shù): || iPicId: 資源ID || pRect: 取圖片的一部分 NULL表示取整個(gè)圖片 || 輸出參數(shù):無(wú) || 返回值: 成功返回位圖句柄 失敗返回NULL || 說 明:此類析構(gòu)時(shí)會(huì)刪除此位圖,使用者不用刪除 |****************************************************************************/HBITMAP GetBitmap(int iPicId, RECT* pRect = NULL);/****************************************************************************| 函數(shù)功能:獲取指定的字體 || 輸入?yún)?shù): || lHeight:字號(hào) || lWeight: 粗度 || szFaceName: 字體名稱 || bUnderline: 是否帶底橫線 || bItalic: 是否斜體 || 輸出參數(shù):無(wú) || 返回值: 成功返回字體句柄 失敗返回NULL || 說 明:此類析構(gòu)時(shí)會(huì)刪除此字體,使用者不用刪除 |****************************************************************************/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對(duì)象的封裝類,許多習(xí)慣WIN32 API 開發(fā)的(SDK開發(fā))可能并不喜歡使用這些類(反正我是不喜歡用,個(gè)人認(rèn)為這些類封裝的并不怎么好),而是習(xí)慣使用API直接創(chuàng)建,況且許多情況下需要直接使用這些GDI對(duì)象的句柄。GDI對(duì)象的撤銷,GDI對(duì)象使用完成后是要撤銷的,以防資源泄漏。CHTGDIManager在類析構(gòu)時(shí)撤銷了它所創(chuàng)建的所有GDI對(duì)象,使用者不需要撤銷。
新聞熱點(diǎn)
疑難解答
圖片精選