积极答复者
listview中添加的图片有的不显示

问题
-
我现在遇到的问题是,我在列表视图中给每一列添加一个bmp图片,各列的图片都不相同,这时候出现了问题,在编译运行时候,有些列的图片显示了,但是有些列的图片不显示,背景是一片空白。我搜索了很多答案,但是仍然没有发现解决我的类似的问题的。想请问是什么原因导致到。下面是我的主要代码:
UINT nStyle = m_lstPicture.GetStyle();
m_lstPicture.ModifyStyle(0, LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_REPORT);nStyle = m_lstPicture.GetExtendedStyle();
m_lstPicture.SetExtendedStyle(m_lstPicture.GetExtendedStyle()
| LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT);m_pLstImg = new CImageList();
m_pLstImg->Create(48, 30, ILC_COLOR, 6, 0);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_pLstImg->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP2);
m_pLstImg->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP3);
m_pLstImg->Add(&bmp, RGB(0, 0, 0));
TRACE("%d", GetLastError());
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP4);
m_pLstImg->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP9);
m_pLstImg->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP8);
m_pLstImg->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
m_lstPicture.SetImageList(m_pLstImg, LVSIL_SMALL);
m_lstPicture.InsertColumn(0, "a", LVCFMT_CENTER, 0);
m_lstPicture.InsertColumn(1, "aaa", LVCFMT_CENTER, 100); //vc中建的图片
m_lstPicture.InsertColumn(2, "aaa", LVCFMT_CENTER, 100); //vc中建的图片
m_lstPicture.InsertColumn(3, "aaa", LVCFMT_CENTER, 100); //其他图片
m_lstPicture.InsertColumn(4, "aaa", LVCFMT_CENTER, 100); //其他图片
m_lstPicture.InsertColumn(5, "aaa", LVCFMT_CENTER, 100); //其他图片
m_lstPicture.InsertColumn(6, "aaa", LVCFMT_CENTER, 100); //其他图片
m_lstPicture.InsertColumn(7, "aaa", LVCFMT_CENTER, 100); //自建
m_lstPicture.InsertColumn(8, "aaa", LVCFMT_CENTER, 100); //其他图片m_lstPicture.DeleteAllItems();
for (int i = 0; i < 10; i++)
{
CString str;
str.Format("%u", -i);
m_lstPicture.InsertItem(i, "", -1);
m_lstPicture.SetItemText(i, 1, str);
m_lstPicture.SetItem(i, 2, LVIF_IMAGE | LVIF_TEXT, "ok", 0, 0, 0, 1);
m_lstPicture.SetItem(i, 3, LVIF_IMAGE | LVIF_TEXT, "ok", 1, 0, 0, 2);
// m_lstPicture.SetItemText(i, 3, str);
m_lstPicture.SetItem(i, 4, LVIF_IMAGE | LVIF_TEXT, "ok", 2, 0, 0, 3);
m_lstPicture.SetItem(i, 5, LVIF_IMAGE | LVIF_TEXT, "ok", 3, 0, 0, 4);
m_lstPicture.SetItem(i, 6, LVIF_IMAGE | LVIF_TEXT, "ok", 4, 0, 0, 5);
m_lstPicture.SetItem(i, 7, LVIF_IMAGE | LVIF_TEXT, "ok", 5, 0, 0, 6);
m_lstPicture.SetItem(i, 8, LVIF_IMAGE | LVIF_TEXT, "ok", 6, 0, 0, 6);
}在显示的时候,我发现只有第2、3、4、5、6显示图片,其他的都空白。而且图片显示的列有问题,就是bitmap7的显示在第4列
答案
-
我试了一下您的代码,没有问题。会不是您这里的问题呢?
bmp.LoadBitmap(IDB_BITMAP9);
。。。
bmp.LoadBitmap(IDB_BITMAP8);
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.- 已标记为答案 神秘人 2011年5月16日 11:23
全部回复
-
我试了一下您的代码,没有问题。会不是您这里的问题呢?
bmp.LoadBitmap(IDB_BITMAP9);
。。。
bmp.LoadBitmap(IDB_BITMAP8);
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.- 已标记为答案 神秘人 2011年5月16日 11:23
-
谢谢VisualEleven。这个问题我还是没有解决,暂时放下了。但是我还是要解决的,我改了但是问题依旧,版主是否可以把你实验的代码发给我研究一下,比较一下我哪里出的错误?我的邮箱是yanghj11@163.com.再次感谢。