C++ CListCtrl和thumnail无法绘制
我使用下面的代码为列表控件创建缩略图C++ CListCtrl和thumnail无法绘制,c++,mfc,visual-studio-2005,C++,Mfc,Visual Studio 2005,我使用下面的代码为列表控件创建缩略图 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.At
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);
什么都做不了。这是一个不完整的、措辞拙劣的问题。混合和匹配windowsapi、MFC和GdiPlus是很好的,但如果没有给出足够的相关代码或解释,任何人所能做的就是猜测您的问题 这是我的猜测。黑色位图的症状通常意味着您的位深度错误。我不知道您正在使用
CImage
做什么,但是上面的代码看起来很好,尽管没有对调用的API进行任何成功验证
我将进一步假设m_imgLst
是一个MFCCImageList
对象,在这种情况下,中可能存在错误。请在该对象上的其他位置创建调用,该对象的位深或尺寸与您现在尝试添加的图像不兼容
您可以通过检查的返回值来测试我的理论。添加它应该是新插入图像的索引,如果失败则为-1。谢谢,我的英语其实不太好。我困了,能写很多信息。请慢慢解释,否则我就抓不住你了。我测试你告诉我的,这是不对的。Add函数的返回值不是-1。我的Create函数隐藏在OninitialUpdate中,就像这个m_imglst.Create(100100,ILC_COLOR32,0,1);我不会一直猜测您的问题可能是什么,但您可以看看我对类似问题所做的操作:检查Add(…)的返回值是关键,确保将图像添加到CImageList中