显示多种格式图片

从程序外部直接加载(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); 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue_Dream_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值