SHFILEINFO 结构

SHFILEINFO Structure

包含关于一个文件对象的信息

语法

typedef struct _SHFILEINFO {
HICON hIcon;
int iIcon;
DWORD dwAttributes;
TCHAR szDisplayName[MAX_PATH];
TCHAR szTypeName[80];
} SHFILEINFO;

成员


hIcon

一个文件图标的句柄。如果不再需要这个句柄,应该使用DestroyIcon函数来销毁这个句柄。

iIcon

系统图片列表中图标图片的索引。

dwAttributes

一个数组,它标识着文件对象的属性。

szDisplayName

包含文件名的字符串,如同Microsoft Windows Shell中显示的一样。或者是路径和文件名它包含了代表文件的图标。

szTypeName

描述文件类型的字符串。

备注

该结构用于SHGetFileInfo函数。

结构信息

Header    shellapi.h
Minimum operating systems    Windows NT 4.0, Windows 95

 

 

  在进行一些与Shell有关的编程时,经常会用到SHGetFileInfo()函数。比如当你想获得一个文件的表示名,图标或者系统的图标列表时,用SHGetFileInfo()函数会比用IShellFolder简单不少。
     以下是两个例子:

1.获得系统图标列表:
  HIMAGELIST     hImageList;
  SHFILEINFO     sfi;
     hImageList = (HIMAGELIST)SHGetFileInfo(L"",
                          0,
                          &sfi,
                       sizeof(SHFILEINFO),
                          SHGFI_SYSICONINDEX | SHGFI_SMALLICON);

// 把图标列表同一个名叫m_FileList的List控件关联。
m_FileList.SendMessage( LVM_SETIMAGELIST, (WPARAM)LVSIL_SMALL, (LPARAM)hImageList);

2.获得一个文件的显示名和图标
  TCHAR       szFilePath[MAX_PATH];
  SHFILEINFO   sfi;
     hImageList = (szFilePath,
                          0,
                          &sfi,
                       sizeof(SHFILEINFO),
                        SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_SMALLICON )

// 显示名和图标在系统图标列表中的编号就分别在sfi.szDisplayName和sfi.iIcon中
  
    应该注意的是,在调用SHGetFileInfo()之前,必须使用 CoInitialize 或者OleInitialize 初始化COM,否则表面上能够使用,但是会造成不安全或者丧失部分功能。例如,一个常见的例子:如果不初始化COM,那么调用该函数就无法得到.htm/.mht/.xml文件的图标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值