首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

listView 中的系统图标有关问题

2012-01-03 
listView中的系统图标问题!我在做一个文档管理程序,我将文件中数据存在数据库中,请问哪位高手知道按文件的

listView 中的系统图标问题!
我在做一个文档管理程序,我将文件中数据存在数据库中,请问哪位高手知道按文件的扩展名取得此文件的系统图标,并将图标放在ListView中.

[解决办法]
参考如下代码

C# code
using System.Runtime.InteropServices;public static uint SHGFI_ICON = 0x100;                      public static uint SHGFI_DISPLAYNAME = 0x200;               public static uint SHGFI_TYPENAME = 0x400;                  public static uint SHGFI_ATTRIBUTES = 0x800;                public static uint SHGFI_ICONLOCATION = 0x1000;             public static uint SHGFI_EXETYPE = 0x2000;                  public static uint SHGFI_SYSICONINDEX = 0x4000;             public static uint SHGFI_LINKOVERLAY = 0x8000;              public static uint SHGFI_SELECTED = 0x10000;                public static uint SHGFI_LARGEICON = 0x0;                   public static uint SHGFI_SMALLICON = 0x1;                   public static uint SHGFI_OPENICON = 0x2;                    public static uint SHGFI_SHELLICONSIZE = 0x4;               public static uint SHGFI_PIDL = 0x8;                        public static uint SHGFI_USEFILEATTRIBUTES = 0x10;          public static uint FILE_ATTRIBUTE_NORMAL = 0x80;public static uint LVM_FIRST = 0x1000;public static uint LVM_SETIMAGELIST = LVM_FIRST + 3;public static uint LVSIL_NORMAL = 0;public static uint LVSIL_SMALL = 1;[DllImport("Shell32.dll")]public static extern IntPtr SHGetFileInfo(string pszPath,     uint dwFileAttributes, ref SHFILEINFO psfi,     int cbfileInfo, uint uFlags);public struct SHFILEINFO{    public IntPtr hIcon;    public int iIcon;    public int dwAttributes;    public string szDisplayName;    public string szTypeName;}[DllImport("User32.DLL")]public static extern int SendMessage(IntPtr hWnd,    uint Msg, IntPtr wParam, IntPtr lParam);public void ListViewSysImages(ListView AListView){    SHFILEINFO vFileInfo = new SHFILEINFO();    IntPtr vImageList = SHGetFileInfo("", 0, ref vFileInfo,        Marshal.SizeOf(vFileInfo), SHGFI_SHELLICONSIZE |        SHGFI_SYSICONINDEX | SHGFI_LARGEICON);    SendMessage(AListView.Handle, LVM_SETIMAGELIST, (IntPtr)LVSIL_NORMAL,        vImageList);    vImageList = SHGetFileInfo("", 0, ref vFileInfo,        Marshal.SizeOf(vFileInfo), SHGFI_SHELLICONSIZE |        SHGFI_SYSICONINDEX | SHGFI_SMALLICON);    SendMessage(AListView.Handle, LVM_SETIMAGELIST, (IntPtr)LVSIL_SMALL,        vImageList);}public int FileIconIndex(string AFileName){    SHFILEINFO vFileInfo = new SHFILEINFO();    SHGetFileInfo(AFileName, 0, ref vFileInfo,        Marshal.SizeOf(vFileInfo), SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX);    return vFileInfo.iIcon;}private void button1_Click(object sender, EventArgs e){    ListViewSysImages(listView1);    listView1.Items.Add("temp.xml", FileIconIndex(@".xml"));} 

热点排行