|
加載一位圖,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad); LoadImage可以用來加載位圖,圖標(biāo)和光標(biāo) 加載時(shí)可以規(guī)定加載圖的映射到內(nèi)存的大?。? cxDesired:指定圖標(biāo)或光標(biāo)的寬度,以像素為單位。如果此參數(shù)為零并且參數(shù)fuLoad值中LR_DEFAULTSIZE沒有被使用,那么函數(shù)使用目前的資源寬度。 cyDesired:指定圖標(biāo)或光標(biāo)的高度,以像素為單位。如果此參數(shù)為零并且參數(shù)fuLoad值中LR_DEFAULTSIZE沒有被使用,那么函數(shù)使用目前的資源高度。 LoadImage的返回值是相關(guān)資源的句柄。因?yàn)榧虞d的是位圖所以返回的句柄是HBITMAP型的(需要強(qiáng)制轉(zhuǎn)換)。 延伸理解 HBITMAP/CBitmap/BITMAP: 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. BITMAP是一個(gè)結(jié)構(gòu)體,封裝著bitmap的一些信息。定義了邏輯位圖的高,寬,顏色格式和位值。 MSDN中如是:This structure defines the type, width, height, color format, and bit values of a bitmap. 三者之間的關(guān)系轉(zhuǎn)換:
HBITMAP hBitmap; CBitmap bitmap; BITMAP bm; //下面是三者之間的聯(lián)系: bitmap.Attach(hBitmap);//由HBITMAP 得到關(guān)聯(lián)的CBitmap bitmap.GetBitmap(&bm); // 由CBitmap 得到關(guān)聯(lián)的BITMAP hBitmap=(HBITMAP)bitmap.GetSafeHandle();//由CBitmap得到相關(guān)的HBITMAP typedef struct tagBITMAP { int bmType; int bmWidth;//寬 int bmHeight;//高 int bmWidthBytes; BYTE bmPlanes; BYTE bmBitsPixel; LPVOID bmBits; } BITMAP; 延伸理解下Attach/Detach: attach是把一個(gè)C++對象與一個(gè)WINDOWS對象關(guān)聯(lián),直到用detach則把關(guān)聯(lián)去掉。 |
|
|