CListCtrl和缩略图无法绘制

时间:2011-08-09 19:04:19

标签: c++ mfc visual-studio-2005

我使用folow代码为列表控件创建缩略图

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 个答案:

答案 0 :(得分:3)

这是一个不完整且措辞不佳的问题。混合和匹配Windows API,MFC和GdiPlus很好,但没有提供足够的相关代码或解释,任何人都可以做的就是猜测你的问题。

说这是我的猜测。黑色位图的症状通常意味着您的位深度错误。我不知道你在使用CImage做了什么,但上面的代码看起来很好,尽管缺少对API调用成功的任何验证。

我将进一步假设m_imgLst是一个MFC CImageList对象,在这种情况下,该对象上其他地方的.Create调用可能存在错误,其位深或维度不兼容你现在想要添加的图像。

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