根据具体的文件,然后找出它在系统里的关联图标,然提取它,(可以加载在IMAGELIST中)
接下来如何使它在LISTVIEW中配合相应的文件显示呢?我试了一种方法总是会把vb终止
Private Sub TV_NodeClick(ByVal Node As MSComctlLib.Node)Dim iml As ListImageOn Error Resume Next
LV.ListItems.Clear
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open "xxx.mdb", "admin", ""
'rs.ActiveConnection = conn
rs.Open "sql", conn, 1, 3
rs.MoveFirst
Do While Not rs.EOF
Dim mIcon As Long
'Extract the associated icon
mIcon = ExtractAssociatedIcon(App.hInstance, rs.Fields(3), 2)
'Draw the icon on the form
Set iml = ImageList1.ListImages.Add(, , IconToPicture(mIcon))
DestroyIcon (mIcon)
LV.ListItems.Add , "k" & Str(rs.Fields(0)), rs.Fields(3), iml.Index
rs.MoveNext
Loop
rs.Close
conn.CloseEnd SubPrivate Function IconToPicture(ByVal hIcon As Long) As IPicture
If hIcon = 0 Then Exit Function
' This is all magic if you ask me:
Dim NewPic As Picture, PicConv As PictDesc, IGuid As Guid
PicConv.cbSizeofStruct = Len(PicConv)
PicConv.picType = vbPicTypeIcon
PicConv.hImage = hIcon
'IGuid.Data1 = &H20400
'IGuid.Data4(0) = &HC0
'IGuid.Data4(7) = &H46
' Fill in magic IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
With IGuid
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
OleCreatePictureIndirect PicConv, IGuid, True, NewPic
Set IconToPicture = NewPic
End Function
谢谢高手赐教
接下来如何使它在LISTVIEW中配合相应的文件显示呢?我试了一种方法总是会把vb终止
Private Sub TV_NodeClick(ByVal Node As MSComctlLib.Node)Dim iml As ListImageOn Error Resume Next
LV.ListItems.Clear
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open "xxx.mdb", "admin", ""
'rs.ActiveConnection = conn
rs.Open "sql", conn, 1, 3
rs.MoveFirst
Do While Not rs.EOF
Dim mIcon As Long
'Extract the associated icon
mIcon = ExtractAssociatedIcon(App.hInstance, rs.Fields(3), 2)
'Draw the icon on the form
Set iml = ImageList1.ListImages.Add(, , IconToPicture(mIcon))
DestroyIcon (mIcon)
LV.ListItems.Add , "k" & Str(rs.Fields(0)), rs.Fields(3), iml.Index
rs.MoveNext
Loop
rs.Close
conn.CloseEnd SubPrivate Function IconToPicture(ByVal hIcon As Long) As IPicture
If hIcon = 0 Then Exit Function
' This is all magic if you ask me:
Dim NewPic As Picture, PicConv As PictDesc, IGuid As Guid
PicConv.cbSizeofStruct = Len(PicConv)
PicConv.picType = vbPicTypeIcon
PicConv.hImage = hIcon
'IGuid.Data1 = &H20400
'IGuid.Data4(0) = &HC0
'IGuid.Data4(7) = &H46
' Fill in magic IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
With IGuid
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
OleCreatePictureIndirect PicConv, IGuid, True, NewPic
Set IconToPicture = NewPic
End Function
谢谢高手赐教
解决方案 »
- 高手过来看看:如何解决AJAX读数据库内容无法换行的问题?
- vb6中如何打开https开头的网页?
- Acess数据库中,若何判断视图是否存在
- vb+access怎么实现查询?很多教程说让用datagird,可是datagird到底是个什么东西,在那里,怎么用?
- 好心的大哥大姐,救救我吧!在线等待!!!
- 字段问题
- 分可加到500,只要大家来解决问题,谢谢了,赚分啦
- 关于星期等....!!
- VB 错误的文件名或号码
- 如何实现?VB不会如此之烂吧?
- 怎样 抓到用户的登陆界面啊, 还在计算机锁定时,按下 DEL+CTRL+SHIFT 时弹出的winddos 全安提示 时的屏幕
- 急啊!activereport报表输出成txt文件时,它与预览的报表不一样,里面的线都没有?怎么处理?
ExtractAssociatedIcon(App.hInstance, rs.Fields(3), 2)
这句明显有问题,rs.Fields(3)真接传给API,习惯极其不好,也少见!这个参数要预分配缓冲区的,不然有可能被Kill的。
我给[email protected]发了个邮件 带附件的 里面的程序写得很清楚了如果还有问题 这个是我的e-mail
[email protected]
Private Function vbAddFileItemIcon(hImgSmall&) As Long Dim r As Long
pixSmall.Picture = LoadPicture()'这里怎么解释,我运行到这里就跳掉了
r& = ImageList_Draw(hImgSmall&, shinfo.iIcon, pixSmall.hdc, 0, 0, ILD_TRANSPARENT)
pixSmall.Picture = pixSmall.Image
vbAddFileItemIcon& = hImgSmall&
'以上几行什么意思,pixsmall是什么对象?怎么没有定义
End Function
Private Function InitializeImageList() As Boolean On Local Error GoTo InitializeError
Set LV.SmallIcons = Nothing
ImageList1.ListImages.Clear
ImageList1.ListImages.Add , "dummy", pixDummy.Picture
Set LV.SmallIcons = ImageList1
InitializeImageList = True
Exit Function
InitializeError:
InitializeImageList = False
End Function
我先把某个盘的文件目录等做了个镜像,取得了每个文件的一些属性放在数据库中,现在我要根据数据库内的文件数据来判断文件在当前系统中的图标是什么,并将图标提出来放在imagelist中显示
因此以上的方法都不行,他们都是当场根据文件的属性来判断的,而且那些代码实在超出我的能力,我看了都快疯了,希望高手帮忙