VC編程控件類(lèi)HTControl之CHTGDIManager GDI資源管理類(lèi)用法解析
本文主要介紹了VC編程控件類(lèi)HTControl的CHTGDIManager GDI資源管理類(lèi)用法,MFC提供的CBitmap類(lèi)的LoadBitmap接口只能從EXE內(nèi)部獲取位圖,但是很多情況下需要從EXE外部獲取,CHTGDIManager類(lèi)提供了從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 | | 說(shuō) 明:此類(lèi)析構(gòu)時(shí)會(huì)刪除此位圖,使用者不用刪除 | ****************************************************************************/ HBITMAP GetBitmap(TCHAR* szPicPath, RECT* pRect = NULL); /**************************************************************************** | 函數(shù)功能:從資源中獲取位圖 | | 輸入?yún)?shù): | | iPicId: 資源ID | | pRect: 取圖片的一部分 NULL表示取整個(gè)圖片 | | 輸出參數(shù):無(wú) | | 返回值: 成功返回位圖句柄 失敗返回NULL | | 說(shuō) 明:此類(lèi)析構(gòu)時(shí)會(huì)刪除此位圖,使用者不用刪除 | ****************************************************************************/ HBITMAP GetBitmap(int iPicId, RECT* pRect = NULL); /**************************************************************************** | 函數(shù)功能:獲取指定的字體 | | 輸入?yún)?shù): | | lHeight:字號(hào) | | lWeight: 粗度 | | szFaceName: 字體名稱(chēng) | | bUnderline: 是否帶底橫線 | | bItalic: 是否斜體 | | 輸出參數(shù):無(wú) | | 返回值: 成功返回字體句柄 失敗返回NULL | | 說(shuō) 明:此類(lèi)析構(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ì)象的封裝類(lèi),許多習(xí)慣WIN32 API 開(kāi)發(fā)的(SDK開(kāi)發(fā))可能并不喜歡使用這些類(lèi)(反正我是不喜歡用,個(gè)人認(rèn)為這些類(lèi)封裝的并不怎么好),而是習(xí)慣使用API直接創(chuàng)建,況且許多情況下需要直接使用這些GDI對(duì)象的句柄。GDI對(duì)象的撤銷(xiāo),GDI對(duì)象使用完成后是要撤銷(xiāo)的,以防資源泄漏。CHTGDIManager在類(lèi)析構(gòu)時(shí)撤銷(xiāo)了它所創(chuàng)建的所有GDI對(duì)象,使用者不需要撤銷(xiāo)。
相關(guān)文章
Qt無(wú)邊框窗口拖拽和陰影的實(shí)現(xiàn)
自定義窗口控件的無(wú)邊框,窗口事件由于沒(méi)有系統(tǒng)自帶邊框,無(wú)法實(shí)現(xiàn)拖拽拉伸等事件的處理,本文主要介紹了Qt無(wú)邊框窗口拖拽和陰影的實(shí)現(xiàn),感興趣的可以了解一下2024-01-01C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的非遞歸后序遍歷算法
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的非遞歸后序遍歷算法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10Qt實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07C++實(shí)現(xiàn)LeetCode(22.生成括號(hào))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(22.生成括號(hào)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07好用的C++ string Format“函數(shù)”介紹
大家好,本篇文章主要講的是好用的C++ string Format“函數(shù)”介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2021-12-12C/C++編譯報(bào)錯(cuò)printf was not declared in 
這篇文章主要介紹了C/C++編譯報(bào)錯(cuò)printf was not declared in this scope問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08C語(yǔ)言函數(shù)棧幀的創(chuàng)建與銷(xiāo)毀原理圖解
我們知道c語(yǔ)言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實(shí)main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過(guò)本文給大家分享c語(yǔ)言函數(shù)棧幀的創(chuàng)建和銷(xiāo)毀過(guò)程,一起看看吧2022-05-05