블로그는 나의 힘!
[ Programing ]/MFC2013. 5. 21. 23:57

이거 때문에 은근히 고생했다.. ㅠ_ㅠ 젠장..

'm_imageList' 는 자료형 이 'CImageList' 임

 

_____________________________________________________________________________

 

 

 

// 이미지 리스트 생성(256 컬러 이상)

m_imageList.DeleteImageList();
m_imageList.Create(32, 32, ILC_MASK|ILC_COLORDDB, 10, 10);

 

// 이미지 리스트에 그림 파일 추가

{

CString str = _T("e:\\test.bmp"); // 그림 파일 이름

HBITMAP hbitmap = NULL;
hbitmap = (HBITMAP)LoadImage(::AfxGetApp()->m_hInstance, str, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);    
CBitmap  bmp; 

bmp.Attach(hbitmap);   
   

m_imageList.Add(&bmp, RGB(192,192,192));   

bmp.DeleteObject();

if (hbitmap) DeleteObject(hbitmap);

}

 

// 리스트 컨트롤에 이미지 리스트 세팅

m_cList_Object.SetImageList(&m_imageList, LVSIL_NORMAL);

 

 

// DX 이용 jpg 붙이기

{

   CString strPath; // 패스 설정   
   
   // 텍스처 생성
   LPDIRECT3DTEXTURE9 Tex; // 텍스처
   LPDIRECT3DDEVICE9 lpDevice = 디바이스 세팅
   D3DXIMAGE_INFO ImageInfo; // 텍스처 정보

             // 텍스처 로드
             HRESULT hr = D3DXCreateTextureFromFileEx(
                     lpDevice , strPath.GetBuffer(0) , 50, 50, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED,
                      D3DX_DEFAULT, D3DX_DEFAULT, 0, &ImageInfo, NULL, &Tex );

   // BMP 생성
   D3DLOCKED_RECT RockRect;          
   memset( &RockRect, 0, sizeof(D3DLOCKED_RECT) );   

   Tex->LockRect(0, &RockRect, NULL, 0 );   

   unsigned char* pDefBits = static_cast<unsigned char*>(RockRect.pBits);
  
   CDC* winDC = GetDC();   
   CBitmap bmp;
   bmp.CreateCompatibleBitmap(winDC, 50, 50);

   bmp.SetBitmapBits(50 * 4 * 50, pDefBits);

   Tex->UnlockRect(0);
      
   // 리스트에 추가
   iImgIndex = m_imageList.Add(&bmp, RGB(256,256,256));   

 

   SAFE_RELEASE(Tex);
   bmp.DeleteObject();

}

 

 

 

 

Posted by Mister_Q