把jpg文件读取到内存char* 再转换成CImage

网络上找到大神写的转换方法,不过就记下来,学习学习;

当然转成CImage之后就可以从CImage转换成HBITMAP 了

复制代码
void DrawPic(CDC *pDC,char *buf,int len)
{
    //内存数据转换成流
    HGLOBAL hMem=GlobalAlloc(GMEM_FIXED,len);
    BYTE* pMem=(BYTE*)GlobalLock(hMem);
    memcpy(pMem,buf,len);
    IStream* pStream;
    HRESULT hr=CreateStreamOnHGlobal(pMem,FALSE,&pStream);

    //画图
    CImage img;
    img.Load(pStream);
    img.Draw(pDC->GetSafeHdc(),CPoint(0,0));

    //清理
    img.Destroy();
    pStream->Release();
    GlobalFree(hMem);
}
复制代码

 

帖子里同样也有了个疑问就是 GlobaLock 之后没有 unlock 大神给出的解释是:“这里用的固定块,GMEM_FIXED,没必要unlock”

posted @ 2022-12-23 17:55  阿风小子  阅读(48)  评论(0编辑  收藏  举报