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

当然转成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”

----------------------------------------------------------------------------------

http://bbs.csdn.net/topics/390973788

posted on 2017-06-22 16:32  瓦楞球  阅读(1496)  评论(0编辑  收藏  举报