2011-08-09 28 views
-1

我用便接踵而來代碼來創建列表控件的縮略圖CListCtrl的和略圖未按照

HDC hDC=::GetDC(hWnd); 
HDC pDC=::CreateCompatibleDC(hDC); 
HBITMAP bm=::CreateCompatibleBitmap(hDC,THUMBNAIL_W,THUMBNAIL_H); 
HBITMAP oldBmp=(HBITMAP)SelectObject(pDC,bm);   
img.StretchBlt(pDC,rcBorder); 
CBitmap bmp; 
bmp.Attach(bm); 
m_imgLst.Add(&bmp,RGB(0,0,0)); 

大的圖像加載,它是在店內的CImage作爲

的CImage IMG;

但縮略圖是黑色的,沒有任何被吸入
上述代碼
img.StretchBlt(PDC,rcBorder); 不會做任何事情。

回答

2

這是一個不完整和措辭不佳的問題。混合和匹配Windows API,MFC和GdiPlus是好的,但沒有給出足夠的相關代碼或解釋,任何人都可以做的就是猜測你的問題。

這就是我的猜測。黑色位圖的症狀通常意味着您的位深度錯誤。我不知道你在做什麼與CImage,但上面的代碼看起來很好,儘管缺少API調用成功的驗證。

我會進一步假設m_imgLst是一個MFC CImageList對象在這種情況下,有可能錯誤是不兼容的比特深度或尺寸現在你正在嘗試添加的形象,對象上的其他地方調用.Create

您可以通過檢查.Add的返回值來測試我的理論,它應該是新插入圖像的索引,如果失敗,則返回-1。

+0

謝謝,我的英語其實不是很好。我很困,可以寫很多信息。請緩慢解釋,否則我無法抓住你。我測試你告訴我什麼,這是不對的。 Add函數的返回值不是-1。並且我的Create函數隱藏在OninitialUpdate中,像這樣** m_imglst.Create(100,100,ILC_COLOR32,0,1); ** – Dalton

+0

我不會猜測你的問題可能是什麼,但你可以看看我爲類似的問題做了什麼:http://stackoverflow.com/questions/4598872/creating-hbitmap-from-memory-buffer – AJG85