【转】CBitmap和HBITMAP的区别及相互转换方法
hbitmap是bitmap的指针,
msdn中:Handle to a bitmap.typedef HANDLE HBITMAP;
cbitmap是mfc中封装bitmap的类;
msdn中:Encapsulates(囊括) a Windows graphics device interface (GDI)bitmap and provides member functions to manipulate(操作) the bitmap.
class CBitmap : public CgdiObject
转化方法两种,Attach和FromHandle:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 CBitmap bmp; 2 bmp.LoadBitmap(IDB_BITMAP1); 3 HBITMAP hbm = (HBITMAP)bmp; 4 CBitmap bmp1; 5 bmp1.Attach(hbm); 6 7 HBITMAP = CBitmap.m_hObject 8 CBitmap * = CBitmap.FromHandle(HBITMAP) 9 10 // 已知HBITMAP hbit; 11 CBitmap cb; 12 cb.FromHandle(hbit); 13 14 // 已知CBitmap cb; 15 HBITMAP hbit = (HBITMAP)cb; 16 17 CBitmap bmp; 18 HBITMAP hBmp; 19 // 相互转换: 20 hBmp = (HBITMAP)bmp.GetSafeHandle(); 21 bmp.Attach(hBmp);
注意点:
Attach和FromHandle的区别
FromHandle得到的指针是临时变量,
,通过Attach连接的句柄可以长久保留,但通过FromHandle得到的只是暂时的,
大概只在一个消息区间内有效,很快便会被删除,所以基本上不能用。
我用了FromHandle然后一直出错!!!