|
萌新想往list控件中把本地的jpg图片当做缩略图添加上去,使用了ATL的CImage类去操作,但是遇到了一些问题,不知道为啥只是重复展示第一张图片,萌新瞅了一天也没瞅明白问题出在哪,查了半天资料也没什么头绪,感觉钻牛角尖忽略了什么,希望大神能指点一二
void CListAddImageDlg::AddImageList(const CStringArray &strarry)
{
CImage old_image;
CImage new_image;
int n = strarry.GetCount();
for (int i = 0; i < n; i++)
{
old_image.Load(strarry[i]);
new_image.Create(100, 70, 32);
HDC temp = new_image.GetDC();
SetStretchBltMode(temp, HALFTONE);
old_image.StretchBlt(temp, 0, 0, 100, 70);
new_image.ReleaseDC();
HBITMAP hBitmap = new_image.Detach();
old_image.Destroy();
new_image.Destroy();
CBitmap bmp;
bmp.DeleteObject();
bmp.Attach(hBitmap);
m_imagelist.Add(&bmp, nullptr);
::DeleteObject(hBitmap);
}
m_list.SetImageList(&m_imagelist, LVSIL_SMALL);
}
用两个CImage的原因是希望把图片全部缩放成统一的大小,追求一点美观
图片所有的地址是存进CStringArray &strarry里的
完整工程代码发一下吧,也好调试!
这么光看还真不太好看出问题
|
上一篇: vc mfc下一篇: 为什么我添加的控件在debug模式看得见,在relea就没了
|