心胸决定格局,眼界决定境界...

在Static中 用Bitmap 画图JPG,BMP,GIF

CRect IRect;
 CStatic *m_static; 
 m_static=(CStatic*)GetDlgItem(IDC_StcShowPic);
 m_static->GetClientRect(&IRect);
 HBITMAP bitmap;
 if(!wcscmp(temp.GetBuffer(),_T("jpg"))||!wcscmp(temp.GetBuffer(),_T("gif"))||!wcscmp(temp.GetBuffer(),_T("bmp")))
 {
  bitmap=LoadALLPIC(strPath.GetBuffer(),IRect.Width(),IRect.Height());  //等待修改
  m_static->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
  m_static->SetBitmap(bitmap);
 }

 

HBITMAP LoadALLPIC(TCHAR * strFileName,int width,int heigh)//加载jpg
{
 IPicture* p=NULL;
 IStream* s=NULL;
 HGLOBAL hG;
 void* pp;
 FILE* fp;
 // Read file in memory
 _wfopen_s(&fp,strFileName,_T("rb"));//Uunicode编码
 //fp=fopen(strFileName,_T("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,width,heigh,LR_COPYRETURNORG );

 p->Release();
 return hBB;

}

posted @ 2013-11-26 16:06  WELEN  阅读(349)  评论(0)    收藏  举报