VC編程控件類HTControl之CHTGDIManager GDI資源管理類用法解析
本文主要介紹了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表示取整個圖片 |
| 輸出參數(shù):無 |
| 返回值: 成功返回位圖句柄 失敗返回NULL |
| 說 明:此類析構(gòu)時會刪除此位圖,使用者不用刪除 |
****************************************************************************/
HBITMAP GetBitmap(TCHAR* szPicPath, RECT* pRect = NULL);
/****************************************************************************
| 函數(shù)功能:從資源中獲取位圖 |
| 輸入?yún)?shù): |
| iPicId: 資源ID |
| pRect: 取圖片的一部分 NULL表示取整個圖片 |
| 輸出參數(shù):無 |
| 返回值: 成功返回位圖句柄 失敗返回NULL |
| 說 明:此類析構(gòu)時會刪除此位圖,使用者不用刪除 |
****************************************************************************/
HBITMAP GetBitmap(int iPicId, RECT* pRect = NULL);
/****************************************************************************
| 函數(shù)功能:獲取指定的字體 |
| 輸入?yún)?shù): |
| lHeight:字號 |
| lWeight: 粗度 |
| szFaceName: 字體名稱 |
| bUnderline: 是否帶底橫線 |
| bItalic: 是否斜體 |
| 輸出參數(shù):無 |
| 返回值: 成功返回字體句柄 失敗返回NULL |
| 說 明:此類析構(gòu)時會刪除此字體,使用者不用刪除 |
****************************************************************************/
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 開發(fā)的(SDK開發(fā))可能并不喜歡使用這些類(反正我是不喜歡用,個人認為這些類封裝的并不怎么好),而是習慣使用API直接創(chuàng)建,況且許多情況下需要直接使用這些GDI對象的句柄。GDI對象的撤銷,GDI對象使用完成后是要撤銷的,以防資源泄漏。CHTGDIManager在類析構(gòu)時撤銷了它所創(chuàng)建的所有GDI對象,使用者不需要撤銷。
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)之二叉樹的非遞歸后序遍歷算法
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之二叉樹的非遞歸后序遍歷算法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
好用的C++ string Format“函數(shù)”介紹
大家好,本篇文章主要講的是好用的C++ string Format“函數(shù)”介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
C/C++編譯報錯printf was not declared in 
這篇文章主要介紹了C/C++編譯報錯printf was not declared in this scope問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
C語言函數(shù)棧幀的創(chuàng)建與銷毀原理圖解
我們知道c語言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過本文給大家分享c語言函數(shù)棧幀的創(chuàng)建和銷毀過程,一起看看吧2022-05-05

