以下方法仅在wtl中测试过
data,len就是要显示的jpg或者png的数据和长度,可以直接从内存加载
void AccountDlg::ShowJpgGif(CImage& img,char* data,int len, int x, int y)
{
IStream *pStm;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len);
if (hGlobal != NULL)
{
LPVOID pvData = GlobalLock(hGlobal);
if (pvData != NULL)
{
memcpy(pvData,data,len);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
img.Load(pStm);
}
}
}
使用方法:
在对话框上放置一个Picture Control,把type设置成Bitmap即可
CImage img;
ShowJpgGif(img,pdata,len,0,0);
HBITMAP h = img.Detach();
CStatic stc = GetDlgItem(IDC_STC_VERIFY);
stc.SetBitmap(h);
如果想直接加载文件可以用下面这个,直接指定文件的路径即可
void ShowJpgGif(CImage& img,char* strPath, int x, int y)
{
IStream *pStm;
int len = 0;
FILE* f = fopen(strPath,"rb");
if (f != NULL)
{
fseek(f,0,SEEK_END);
len = ftell(f);
rewind(f);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
pvData = GlobalLock(hGlobal);
if (pvData != NULL)
{
//file.Read(pvData, cb);
fread(pvData,1,len,f);
fclose(f);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
img.Load(pStm);
}
}
}
}
使用方法:
CImage img;
ShowJpgGif(img,"aa.png",0,0);
m_hBitmap = img.Detach();
m_imgStc = GetDlgItem(IDC_STC_IMAGE);
m_imgStc.SetBitmap(m_hBitmap);
来源:CSDN
作者:varding
链接:https://blog.csdn.net/varding/article/details/8744210