CImage从资源中加载图片文件

来源:互联网 发布:月影传说mac版下载 编辑:程序博客网 时间:2024/04/30 21:34
CImage从资源中加载图片文件CImage直接加载图片文件倒是好办,直接用Load函数就可以,但是如何从工程资源中添加jpg、gif、png等图片呢?用下面这个函数BOOL CDDCDlg::LoadImageFromResource(ATL::CImage *pImage, UINT nResID,LPCTSTR lpTyp){    if ( pImage == NULL) return false;    pImage->Destroy();    // 查找资源    HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);    if (hRsrc == NULL) return false;    // 加载资源    HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);    if (hImgData == NULL)    {        ::FreeResource(hImgData);        return false;    }    // 锁定内存中的指定资源    LPVOID lpVoid    = ::LockResource(hImgData);    LPSTREAM pStream = NULL;    DWORD dwSize    = ::SizeofResource(AfxGetResourceHandle(), hRsrc);    HGLOBAL hNew    = ::GlobalAlloc(GHND, dwSize);    LPBYTE lpByte    = (LPBYTE)::GlobalLock(hNew);    ::memcpy(lpByte, lpVoid, dwSize);    // 解除内存中的指定资源    ::GlobalUnlock(hNew);    // 从指定内存创建流对象    HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);    if ( ht != S_OK )    {        GlobalFree(hNew);    }    else    {        // 加载图片        pImage->Load(pStream);        GlobalFree(hNew);    }    // 释放资源    ::FreeResource(hImgData);    return true;}
原创粉丝点击