Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CListCtrl和thumnail无法绘制_C++_Mfc_Visual Studio 2005 - Fatal编程技术网

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
是一个MFC
CImageList
对象,在这种情况下,
中可能存在错误。请在该对象上的其他位置创建
调用,该对象的位深或尺寸与您现在尝试添加的图像不兼容


您可以通过检查
的返回值来测试我的理论。添加
它应该是新插入图像的索引,如果失败则为-1。

谢谢,我的英语其实不太好。我困了,能写很多信息。请慢慢解释,否则我就抓不住你了。我测试你告诉我的,这是不对的。Add函数的返回值不是-1。我的Create函数隐藏在OninitialUpdate中,就像这个m_imglst.Create(100100,ILC_COLOR32,0,1);我不会一直猜测您的问题可能是什么,但您可以看看我对类似问题所做的操作:检查Add(…)的返回值是关键,确保将图像添加到CImageList中