天天看點

hbitmap Cbitmap的轉換

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:

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然後一直出錯!!!

from:http://blog.csdn.net/newstarao/archive/2009/05/22/4209656.aspx

繼續閱讀