我寫了下面的代碼,它試圖將32x32位圖(通過MFC資源系統加載)並將其轉換爲16x16位圖,以便它們可以用作CListCtrl的大小CImageLists。但是,當我打開CListCtrl時,所有圖標都是黑色的(在小視圖和大視圖中)。在我開始調整大小之前,所有內容在大視圖中都能很好地工作。縮放CBitmap - 我做錯了什麼?
我在做什麼錯?
// Create the CImageLists
if (!m_imageListL.Create(32,32,ILC_COLOR24, 1, 1))
{
throw std::exception("Failed to create CImageList");
}
if (!m_imageListS.Create(16,16,ILC_COLOR24, 1, 1))
{
throw std::exception("Failed to create CImageList");
}
// Fill the CImageLists with items loaded from ResourceIDs
int i = 0;
for (std::vector<UINT>::iterator it = vec.begin(); it != vec.end(); it++, i++)
{
CBitmap* bmpBig = new CBitmap();
bmpBig->LoadBitmap(*it);
CDC bigDC;
bigDC.CreateCompatibleDC(m_itemList.GetDC());
bigDC.SelectObject(bmpBig);
CBitmap* bmpSmall = new CBitmap();
bmpSmall->CreateBitmap(16, 16, 1, 24, 0);
CDC smallDC;
smallDC.CreateCompatibleDC(&bigDC);
smallDC.SelectObject(bmpSmall);
smallDC.StretchBlt(0, 0, 32, 32, &bigDC, 0, 0, 16, 16, SRCCOPY);
m_imageListL.Add(bmpBig, RGB(0,0,0));
m_imageListS.Add(bmpSmall, RGB(0,0,0));
}
m_itemList.SetImageList(&m_imageListS, LVSIL_SMALL);
m_itemList.SetImageList(&m_imageListL, LVSIL_NORMAL);
仍然得到同樣的問題,與行補充說:'bigDC.CreateCompatibleDC(的GetDC( ));' – Smashery 2010-05-06 07:55:58
@Smashery - 你爲什麼不調試,看看哪個呼叫失敗 – SysAdmin 2010-05-06 08:41:57
沒有呼叫失敗。它只是黑色。 – Smashery 2010-05-06 23:08:24