CListCtrl и thumnail не могут нарисовать - PullRequest
0 голосов
/ 09 августа 2011

Я использую следующий код для создания эскиза для управления списком

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);ничего не делает.

1 Ответ

3 голосов
/ 09 августа 2011

Это неполный и плохо сформулированный вопрос.Смешивать и сопоставлять Windows API, MFC и GdiPlus - это хорошо, но без достаточного количества соответствующего кода или объяснения все, что кто-либо может сделать, это угадать вашу проблему.

Тем не менее, это мое предположение.Симптом черного растрового изображения обычно означает, что ваша битовая глубина была неправильной.Я понятия не имею, что вы делаете с CImage, но приведенный выше код выглядит нормально, хотя и пропускает какую-либо проверку успешности API под названием.

Далее я предполагаю, что m_imgLst - это MFC CImageListобъект, в этом случае вероятная ошибка была в вызове .Create в другом месте этого объекта с несовместимой битовой глубиной или размерами для изображения, которое вы сейчас пытаетесь добавить.

Вы можете проверить мою теорию, проверив возвратзначение .Add должно быть индексом вновь вставленного изображения или -1, если это не удалось.

...