다양한 형식의 그림 보이기

1507 단어 imageFilenullFP
         (png, jif, bmp,jpg  )            
HBITMAP LoadAllPic(CString strFileName)
{
 IPicture* p=NULL;
 IStream* s=NULL;
 HGLOBAL hG;
 void* pp;
 FILE* fp;

 fp = fopen(strFileName,"rb");//    
 if (!fp)
  return NULL;

 fseek(fp,0,SEEK_END);
 int fs = ftell(fp);
 fseek(fp,0,SEEK_SET);
 hG = GlobalAlloc(GPTR,fs);
 if (!hG)
 {
  fclose(fp);
  return NULL;
 }
 pp = (void*)hG;
 fread(pp,1,fs,fp);
 fclose(fp);

 CreateStreamOnHGlobal(hG,false,&s);
 if (!s)
 {
  GlobalFree(hG);
  return NULL;
 }

 OleLoadPicture(s,0,false,IID_IPicture,(void**)&p);

 if (!p)
 {
  s->Release();
  GlobalFree(hG);
  return NULL;
 }

 s->Release();
 GlobalFree(hG);

 HBITMAP hB = 0;
 p->get_Handle((unsigned int*)&hB);

 // Copy the image.Necessary, because upon p's release,
 // the handle is destroyed.
 HBITMAP hBB = (HBITMAP)CopyImage(hB,IMAGE_BITMAP,0,0,LR_COPYRETURNORG );

 p->Release();
 return hBB;
}

//  CStatic   
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC); 
pStatic->ModifyStyle(0xF,SS_BITMAP); 
pStatic->SetBitmap(hBitmap); 
 

좋은 웹페이지 즐겨찾기