青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

brent's hut

從資源中加載jpg, png到GDI+ Image

從資源中加載jpg和png文件, 貌似不應該是個大問題, 一google結果一大堆, 卻有兩個陷阱,trap啊

1, 是Bitmap(RT_BITMAP)類型的圖片無法加載, RT_BITMAP是預定義類型, 資源里面沒有bmp文件的頭, SizeofResource 的返回值要比圖片文件少幾個字節,因為少了這幾個字節, 所以GDI+會返回invalid parameter錯誤。

2, 從IStream里面創建出來的Image對象似乎會引用到堆里面的內存, 如果hBuffer被釋放了, 創建的Image的內容就會被破壞,有時只能畫出一小部分圖片, 有時整個圖片就是空白, 視當時的內存狀況而定。調用Image的Clone也沒用。


CYourClass::~CYourClass()
{
    
for(IMG_VECTOR::iterator it = m_arImage.begin(); it != m_arImage.end(); it++)
        delete 
*it;
    
for(HGLB_VECTOR::iterator it = m_arGlobal.begin(); it != m_arGlobal.end(); it++)
    {
        ::GlobalUnlock(
*it);
        ::GlobalFree(
*it);
    }
}

void CYourClass::AddImage(HMODULE hInst, UINT nResourceID, LPCTSTR lpType)
{
    
if(lpType == RT_BITMAP)
    {
        
//GDI+ can not load RT_BITMAP resouce, 
        
//because they are predefined resource, 
        
//they don't contains the image file header.
        assert(FALSE);
        
return;
    }

    HRSRC hResource 
= ::FindResource(hInst, MAKEINTRESOURCE(nResourceID), lpType);
    
if (!hResource)
        
return;

    DWORD imageSize 
= ::SizeofResource(hInst, hResource);
    
if (!imageSize)
        
return;

    
const void* pResourceData = ::LockResource(::LoadResource(hInst, hResource));
    
if (!pResourceData)
        
return;

    HGLOBAL hBuffer 
= ::GlobalAlloc(GMEM_FIXED, imageSize);
    
if (NULL == hBuffer)
        
return;

    
void* pBuffer = ::GlobalLock(hBuffer);
    
if (pBuffer)
    {
        CopyMemory(pBuffer, pResourceData, imageSize);
        IStream
* pStream = NULL;
        
if (::CreateStreamOnHGlobal(hBuffer, FALSE, &pStream) == S_OK)
        {
            Gdiplus::Image 
* pImage = Gdiplus::Image::FromStream(pStream);
            pStream
->Release();
            
if (pImage)
            { 
                
if (pImage->GetLastStatus() == Gdiplus::Ok &&
                    pImage
->GetWidth() > 0)
                {
                    m_arImage.push_back(pImage);
                    
//it seems the image will take usage of the global memory.
                    
//so the global memory should be kept until the image destroy.
                    m_arGlobal.push_back(hBuffer);
                    
return;
                }

                delete pImage;
            }
        }
        ::GlobalUnlock(hBuffer);
    }
    ::GlobalFree(hBuffer);
}

posted on 2009-11-05 16:01 brent 閱讀(7620) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产精品久久国产精品| 国产精品99久久久久久久久久久久| 欧美日韩亚洲国产精品| 国产精品成人一区二区| 国产精品高清在线观看| 亚洲欧美日韩精品综合在线观看| 久久精品国产免费观看| 欧美激情按摩| 午夜精品国产更新| 欧美激情中文字幕在线| 韩国女主播一区| 亚洲一区二区三区在线播放| 久久嫩草精品久久久久| 欧美激情一区二区三区全黄| 欧美日韩hd| 最新亚洲电影| 葵司免费一区二区三区四区五区| 久久久综合网站| 你懂的网址国产 欧美| 国产欧美日韩激情| 亚洲精品中文字幕在线| 久久精品中文字幕免费mv| 亚洲视频国产视频| 欧美日韩第一区日日骚| 久久电影一区| 午夜精品久久久久久99热| 在线观看亚洲精品| 久久综合一区| 欧美午夜免费电影| 亚洲综合成人婷婷小说| 亚洲美女免费精品视频在线观看| 美女999久久久精品视频| 国产一区二区三区高清播放| 亚洲欧美国产三级| 久久免费少妇高潮久久精品99| 国产精品久久久久影院色老大| 一区二区三区鲁丝不卡| 最近中文字幕日韩精品| 国产在线高清精品| 久久综合伊人77777麻豆| 欧美三级特黄| 亚洲一区二区网站| 欧美成年人视频网站欧美| 最新国产精品拍自在线播放| 蘑菇福利视频一区播放| 老司机午夜精品视频| 亚洲国产精品毛片| 亚洲国产高清自拍| 欧美高清在线视频观看不卡| 日韩亚洲欧美在线观看| 亚洲免费电影在线| 亚洲精品久久久久久久久久久久| 亚洲国产欧美在线| 欧美日韩另类国产亚洲欧美一级| 欧美成人免费在线视频| 欧美日韩免费一区二区三区| 欧美激情一级片一区二区| 韩国精品久久久999| 午夜精品久久久久| 欧美综合国产| 国产日韩欧美在线观看| 欧美 日韩 国产在线 | 一区二区三区四区国产精品| 国产精品一二三视频| 久久久久久高潮国产精品视| 国产乱码精品一区二区三区忘忧草| 在线综合+亚洲+欧美中文字幕| 在线视频亚洲一区| 欧美日韩一区二区三区在线视频 | 亚洲图片欧美日产| 欧美日韩在线精品| 亚洲一区久久久| 亚洲第一精品电影| 亚洲精品一区二区三区蜜桃久| 欧美在线短视频| 91久久综合| 国产日韩三区| 西西裸体人体做爰大胆久久久| 国产伦精品一区| 亚洲女人小视频在线观看| 亚洲精品一区在线| 欧美日韩国产成人在线观看| 91久久国产综合久久| 免费欧美视频| 午夜精品久久久久久久| 日韩亚洲在线观看| 亚洲一区二区在线| 亚洲一区在线视频| 国产乱码精品| 先锋资源久久| 久久久久久久国产| 亚洲人午夜精品免费| 欧美国产日韩一区二区在线观看 | 欧美精品免费在线| 亚洲精品在线视频观看| 亚洲欧美激情一区| 国产一区二区按摩在线观看| 久久精品官网| 欧美激情一区二区三区在线视频| 亚洲精品久久久久久一区二区| 欧美日韩国产一区| 亚洲自拍偷拍色片视频| 牛牛精品成人免费视频| 亚洲午夜国产成人av电影男同| 国产一区二区三区久久 | 亚洲一区在线视频| 亚洲第一精品在线| 国产精品久久久久久久久久尿| 久久国产福利国产秒拍| 亚洲免费观看| 免费欧美高清视频| 欧美在线视频网站| 亚洲第一伊人| 国产精品亚洲综合| 亚洲靠逼com| 免费看黄裸体一级大秀欧美| 午夜精品亚洲| 欧美日韩免费在线观看| 久久久久久久性| 午夜精品一区二区三区四区| 亚洲人永久免费| 精品不卡在线| 欧美在线黄色| 亚洲网在线观看| 午夜久久电影网| 一区二区欧美在线观看| 亚洲成人在线免费| 激情综合久久| 国产欧美精品日韩| 国产精品99免视看9| 欧美精品性视频| 欧美成人午夜激情在线| 久久久噜噜噜久久狠狠50岁| 理论片一区二区在线| 久久国产日韩欧美| 亚洲欧美日韩视频一区| 亚洲三级免费| 91久久精品国产91性色| 国产一区视频观看| 国产性做久久久久久| 国产精品丝袜久久久久久app| 欧美日在线观看| 欧美日韩三级在线| 欧美日韩国产999| 欧美日韩综合在线免费观看| 国产精品劲爆视频| 国产欧美va欧美va香蕉在| 国产精品夜色7777狼人| 国产美女一区二区| 国产一区二区三区久久| 精品成人一区二区| 91久久久国产精品| 夜夜狂射影院欧美极品| 国产精品久久久久久久久久三级| 欧美日韩视频第一区| 欧美视频日韩视频在线观看| 国产精品美女久久久久久2018| 国产伦精品一区二区三区高清版| 国产亚洲观看| 亚洲国产精品va| 国产精品99久久久久久人 | 国产欧美日韩三区| 国产亚洲欧美一区在线观看| 黄网动漫久久久| 99riav国产精品| 欧美亚洲一区二区三区| 亚洲高清自拍| 日韩一区二区精品视频| 亚洲砖区区免费| 久久综合五月| 亚洲精品乱码久久久久久| 亚洲午夜在线视频| 久久精品国产一区二区三| 亚洲精品少妇30p| 亚洲综合精品自拍| 免费短视频成人日韩| 国产精品国产精品国产专区不蜜| 狠狠色香婷婷久久亚洲精品| 亚洲精品一区久久久久久| 性欧美在线看片a免费观看| 欧美 日韩 国产在线| 一区二区三区免费看| 久久久久久综合| 国产精品成人在线观看| 亚洲第一页中文字幕| 午夜精品www| 亚洲日韩欧美视频一区| 新狼窝色av性久久久久久| 欧美极品aⅴ影院| 国内久久婷婷综合| 亚洲欧美激情在线视频| 欧美激情亚洲精品| 欧美在线不卡视频| 欧美性jizz18性欧美| 亚洲成人在线| 久久综合成人精品亚洲另类欧美| 欧美一级在线视频| 亚洲人成毛片在线播放女女| 欧美在线播放视频| 国产精品亚洲欧美|