怎么让一个TListView使用两个不同的ImageList呢?具体有关问题请时,解决马上给分
如何让一个TListView使用两个不同的ImageList呢?具体问题请时,解决马上给分
同一ListView中我要显示系统已知文件类型的图标,和一些我自己定义的图标,但在关联ImageList时我只能关联一个,如下:
DWORD ImageHandle = SHGetFileInfo( " ",0,&info,sizeof(info),SHGFI_ICON|SHGFI_SHELLICONSIZE|SHGFI_SYSICONINDEX);
if (ImageHandle != 0)
{
ImageList3-> Handle = ImageHandle;
ImageList3-> ShareImages = true;
}
在ListView CustomDrawItem事件中代码如下:
if (Item-> ImageIndex == -1)//在添加TListItem时我已经设置其ImageIndex = -1了
{
SHFILEINFO info;
DWORD result = SHGetFileInfo((Item-> SubItems-> Strings[1] + Item-> SubItems-> Strings[0]).c_str(),0,&info,sizeof(info),SHGFI_SMALLICON|SHGFI_SHELLICONSIZE|SHGFI_SYSICONINDEX);
if (result != 0)
Item-> ImageIndex = info.iIcon;
}
我的问题是:在同一个ListView中如何把另一个 ImageList中index=9的图片也加到同一个ListView
------解决方案--------------------
把系统图标添加到你的ImageList中
ListView1-> StateImages = ImageList1;
SHFILEINFO info;
DWORD ImageHandle = SHGetFileInfo( " ", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SHELLICONSIZE | SHGFI_SYSICONINDEX);
if (ImageHandle != 0)
{
TImageList *il = new TImageList(this);
il-> Handle = ImageHandle;
ImageList1-> AddImages(il);
delete il;
}
同一ListView中我要显示系统已知文件类型的图标,和一些我自己定义的图标,但在关联ImageList时我只能关联一个,如下:
DWORD ImageHandle = SHGetFileInfo( " ",0,&info,sizeof(info),SHGFI_ICON|SHGFI_SHELLICONSIZE|SHGFI_SYSICONINDEX);
if (ImageHandle != 0)
{
ImageList3-> Handle = ImageHandle;
ImageList3-> ShareImages = true;
}
在ListView CustomDrawItem事件中代码如下:
if (Item-> ImageIndex == -1)//在添加TListItem时我已经设置其ImageIndex = -1了
{
SHFILEINFO info;
DWORD result = SHGetFileInfo((Item-> SubItems-> Strings[1] + Item-> SubItems-> Strings[0]).c_str(),0,&info,sizeof(info),SHGFI_SMALLICON|SHGFI_SHELLICONSIZE|SHGFI_SYSICONINDEX);
if (result != 0)
Item-> ImageIndex = info.iIcon;
}
我的问题是:在同一个ListView中如何把另一个 ImageList中index=9的图片也加到同一个ListView
------解决方案--------------------
把系统图标添加到你的ImageList中
ListView1-> StateImages = ImageList1;
SHFILEINFO info;
DWORD ImageHandle = SHGetFileInfo( " ", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SHELLICONSIZE | SHGFI_SYSICONINDEX);
if (ImageHandle != 0)
{
TImageList *il = new TImageList(this);
il-> Handle = ImageHandle;
ImageList1-> AddImages(il);
delete il;
}