如何取得文件的图标?

bestext 2000-07-21 01:49:00
我用ListView控件模仿Windows文件夹的时候,遇到一个问题:Windows在显示文件的时候,不同的扩展名对应不同的图标。这个图标的位置好象是存放在注册表里面,如何取得某个扩展名对应的图标?谢谢。
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wingsun 2000-07-22
  • 打赏
  • 举报
回复
使用ShGetFileInfo,返回ImageList的Handle,将这个ListView的Images的Handle指向这个之就可以了,我使用BCB实现如下:
THandle ImageList;
SHFILEINFO * FileInfo=new SHFILEINFO();
ImageList=SHGetFileInfo("C:\\",0,FileInfo,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
SendMessage(lstvwOriginalFiles->Handle,LVM_SETIMAGELIST,LVSIL_SMALL,ImageList);
ImageList=SHGetFileInfo("C:\\",0,FileInfo,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX | SHGFI_LARGEICON);
SendMessage(lstvwOriginalFiles->Handle,LVM_SETIMAGELIST,LVSIL_NORMAL,ImageList);
delete FileInfo;
Mike_sun 2000-07-22
  • 打赏
  • 举报
回复
api 了
ReganCai 2000-07-22
  • 打赏
  • 举报
回复
我记得用API:ExtractIcon,
定义:Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long;
可以把exe,dll等文件中的所有icon都取出来。

peng_hui 2000-07-21
  • 打赏
  • 举报
回复
用API函数:SHGetFileInfo就可以了。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧