做个增加设备的循环调用(AddDevice())函数,不同的设备名,显示不同的图标。但是下面代码,有错误,加上
“m_imageList.DeleteImageList();”这句就只显示一种图标的样式,不加就有错误出现,请各位高手帮忙看看!void AddDevice(CString strName)
{
m_imageList.DeleteImageList();
m_imageList.Create(32,32,ILC_COLOR4,3,2);
if(strName=="DVD/HDD Recorder"){
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));
}
else if(strName=="Digital Tuner"){
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2));
}
else if(strName=="D-VHS"){
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON3));
}
else{
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON4));
}
m_imageList.Add(m_hIcon);
m_listctrldv.SetImageList(&m_imageList,LVSIL_NORMAL);
m_listctrldv.InsertItem(0,strName);
m_listctrldv.SetItemText(0,1,tszModleName);
//set temp
m_listctrldv.SetItemText(0,2,strDeviceStatus);
…………
…………
…………}
“m_imageList.DeleteImageList();”这句就只显示一种图标的样式,不加就有错误出现,请各位高手帮忙看看!void AddDevice(CString strName)
{
m_imageList.DeleteImageList();
m_imageList.Create(32,32,ILC_COLOR4,3,2);
if(strName=="DVD/HDD Recorder"){
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));
}
else if(strName=="Digital Tuner"){
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2));
}
else if(strName=="D-VHS"){
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON3));
}
else{
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON4));
}
m_imageList.Add(m_hIcon);
m_listctrldv.SetImageList(&m_imageList,LVSIL_NORMAL);
m_listctrldv.InsertItem(0,strName);
m_listctrldv.SetItemText(0,1,tszModleName);
//set temp
m_listctrldv.SetItemText(0,2,strDeviceStatus);
…………
…………
…………}
你把m_imageList构建放到外面,
这个只要构建一次啊,然后只是每次插值的时侯选择不同的图标就可以了
当然只显示一种图标了
"的创建放到外面了,删除了" m_imageList.DeleteImageList();"可是为什么添加哪个设备,哪个设备的图标就一真被所有的设备显示那?
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));
m_imageList.Add(m_hIcon);
m_hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2));
m_imageList.Add(m_hIcon);
m_listctrldv.SetImageList(&m_imageList,LVSIL_NORMAL);
SetImageList同样要放到外面啊,只能set一次啊,第二次set会把第一次的覆盖掉啊
总之SetImageList完成了,imdgelist才算构检好了,也就是可以用了;在set之前要把所有你要的图标都加进去,然后才能SetImageList