bmp

1829 단어 imagenull
ico 파일은 비교적 특수해서 일반적으로 돌릴 수 없다. 여기서 네티즌에게서 bmp를 ico로 돌리는 코드를 보았는데 시험해 본 적이 없다. 먼저 남겨 두었다가 나중에 쓸 때 꺼내 보자.네티즌들의 공유에 감사 드립니다.
CFileDialog   DlgFileOpen(   TRUE, "*.ICO ",NULL,NULL, "bmp  (*.BMP)|*.BMP|| "); 
if(DlgFileOpen.DoModal()==IDCANCEL) 
return; 
HBITMAP   hBmpClr=   (HBITMAP)   ::LoadImage(AfxGetResourceHandle(), 
                                             DlgFileOpen.GetFileName(), 
                                             IMAGE_BITMAP, 
                                             0,0, 
                                             LR_DEFAULTCOLOR|LR_DEFAULTSIZE|LR_LOADFROMFILE 
                                             ); 

CDC   dcMemSrc,dcMemDst; 
dcMemSrc.CreateCompatibleDC   (NULL); 
dcMemDst.CreateCompatibleDC(NULL); 

BITMAP   bmp; 
::GetObject   (hBmpClr,   sizeof   (BITMAP),   (LPVOID)   &bmp); 

CBitmap   bmpClr; 
dcMemSrc.SelectObject(hBmpClr); 
bmpClr.CreateCompatibleBitmap(&dcMemSrc,32,32   ); 
HBITMAP   hOldBmp=(HBITMAP)dcMemDst.SelectObject(bmpClr); 
COLORREF   clrMask=dcMemSrc.GetPixel(CPoint(0,0)); 
dcMemDst.FillSolidRect(0,0,32,32   ,clrMask); 
dcMemDst.StretchBlt(0,0,32,32   ,&dcMemSrc,0,0,bmp.bmWidth,bmp.bmHeight,SRCINVERT); 

hBmpClr=(HBITMAP)dcMemDst.SelectObject(hOldBmp); 


HBITMAP   hMaskBmp; 
CBitmap   bmpMask; 
bmpMask.CreateCompatibleBitmap(&dcMemSrc,32,32   ); 

hOldBmp   =   (HBITMAP)   dcMemSrc.SelectObject   (bmpMask); 
dcMemSrc.FillSolidRect(CRect   (0,   0,   32,   32   ),RGB(255,255,255)); 
hMaskBmp=(HBITMAP)dcMemSrc.SelectObject(hOldBmp); 
ICONINFO   IconInfo; 
IconInfo.fIcon=TRUE; 
IconInfo.hbmColor=hBmpClr; 
IconInfo.hbmMask=hMaskBmp; 
IconInfo.xHotspot=0; 
IconInfo.yHotspot=0; 
HICON   hIcon=CreateIconIndirect(&IconInfo); 

::DeleteObject(hBmpClr); 
::DeleteObject(hMaskBmp); 

좋은 웹페이지 즐겨찾기