高手请进:怎样vb获取与文件类型相关联的图标?

jhshen 2001-12-17 01:04:21
在vb中,我要获取某几个文件类型的图标,比如.avi,.doc类型的图标,
查了很多资料,知道可以调用windows api函数ExtractAssociateIcon得到,
但还是遇到很多问题:
1。该api的一个参数需要是一个具体的文件名,如:d:\a.txt,而我用的时候是没有具体文件的。想了个办法,我可以创建一个新文件如d:\temp\b.txt,然后再获取相关联的图表,但是这样大大影响了程序执行效率,心有不甘,不知还有没有其他好办法

2。得到的返回值是个一个handler,我可以把图标显示出来,但一刷新页面,图标就没了,无法保存图标,无法把图标set给一个picture对象。如何解决?
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhshen 2001-12-17
  • 打赏
  • 举报
回复
呵呵,终于搞定了,在msdn里找了半天
jinyefeng 2001-12-17
  • 打赏
  • 举报
回复
看看ImageList1.ListImages.Add 后面的提示
jhshen 2001-12-17
  • 打赏
  • 举报
回复
Dim strFilePath As String * 256
Dim mIcon As Long
Dim lpiIcon As Long

strFilePath = "E:\d.doc"
mIcon = ExtractAssociatedIcon(App.hInstance, strFilePath, 2)

If mIcon = 0 Then
MsgBox "no icon"
Exit Sub
End If

DrawIconEx Picture1.hdc, 0, 0, mIcon, 0, 0, 0, 0, DI_NORMAL

Picture1.AutoRedraw = True

ImageList1.ListImages.Add , , Picture1.Picture
'这一步运行到这一步,就出错,为什么picture1.picture还是invalid picture,
'但图片已经显示出来了啊
'我如何把得到的图标加到imageList中?

'remove the icon from the memory
DestroyIcon mIcon
jhshen 2001-12-17
  • 打赏
  • 举报
回复
Dim strFilePath As String * 256
Dim mIcon As Long
Dim lpiIcon As Long

strFilePath = "E:\d.doc"
mIcon = ExtractAssociatedIcon(App.hInstance, strFilePath, 2)

If mIcon = 0 Then
MsgBox "no icon"
Exit Sub
End If

DrawIconEx Picture1.hdc, 0, 0, mIcon, 0, 0, 0, 0, DI_NORMAL

Picture1.AutoRedraw = True

ImageList1.ListImages.Add , , Picture1.Picture
'这一步运行到这一步,就出错,为什么picture1.picture还是invalid picture,
'但图片已经显示出来了啊
'我如何把得到的图标加到imageList中?

'remove the icon from the memory
DestroyIcon mIcon
legend-never-die 2001-12-17
  • 打赏
  • 举报
回复
第一个有办法吗?
我来UP一下
sxmzmxh 2001-12-17
  • 打赏
  • 举报
回复
picture的属性autoredraw=true
三杯倒 2001-12-17
  • 打赏
  • 举报
回复
1111

7,771

社区成员

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

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