Я работаю над одним MFC/SDI
проект, где я использую CListView
как вид по умолчанию.
Но дело в том, что я подал заявку ImageList
к CListCtrl
но эти изображения не отображаются четко.
Как показано на рисунке ниже.
Ниже приведен код для создания нового списка изображений.
Создание ImageList
где m_ImgList
является членом CImageList
,
if(m_ImgList->m_hImageList == NULL || m_ImgList->DeleteImageList() == TRUE)
{
m_ImgList->Create(16,16, ILC_COLOR,0, 1);
}
Затем я создаю изображения, используя данные BLOB из базы данных.
Вот, pByte
является BYTE*
держать BLOB
Данные.
HGLOBAL hGlobal = ::GlobalAlloc(GMEM_MOVEABLE, nbytes+5);
LPVOID pV = GlobalLock(hGlobal);
memcpy(pV, pByte, nbytes);
GlobalUnlock(hGlobal);
LPSTREAM pstm = NULL;
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
CImage image;
image.Load(pstm);
if (image == NULL)
{
image.Load(NILIMAGE);
}
CPaintDC dc(this);
CDC pMDC;
pMDC.CreateCompatibleDC(&dc);
CBitmap pb;
pb.CreateCompatibleBitmap(&dc, iNewWidth, iNewHeight);
CBitmap *pob = (CBitmap*)pMDC.SelectObject(&pb);
image.StretchBlt(pMDC.m_hDC,0, 0, iNewWidth, iNewHeight,
0, 0, image.GetWidth(), image.GetHeight(), SRCCOPY);
pMDC.SelectObject(pob);
Adding images to the image list
if((m_ImgList->Add(&pb, RGB(0,0,0)))== -1)
{
_T("undone");
}
if(hGlobal != NULL)
::GlobalFree(hGlobal);
Может кто-нибудь сказать мне, как я могу это сделать?
Заранее спасибо.
и извините за плохой английский.
Задача ещё не решена.
Других решений пока нет …