http://www.china-askpro.com/download/edeskvb.exe
VB编的资源管理器
VB编的资源管理器
解决方案 »
- 请问高手,为什么点击两次cmmand1(传送两次图片)第二次会实时错误52
- vb sql 过滤数据的问题
- 高分VB+ACESS查询问题
- 简单的问题:VB自带的常用控件在哪些包里
- 谢谢rainstormmaster. 那么maskedit如何导入呢?
- b/s结构中,如果用户关闭客户端的浏览器,再从新打开就无法连上服务器,如何解决?
- 怎么样,能够将输出信息打印在控制台上呢???(急)
- 是否可以对datareport中添加的控件编程呢
- 请问在VB中怎么实现动画效果的控件移动
- 在Access下,用ADO的Con..属性的Ex...的方法来执行SQL语句,怎样判断SQL语句执行是否成功?
- 求救VB的高手们
- 有关Access数据库的问题,能建立2个recordset吗?
例如:
Set nod = TreeView1.Nodes.Add(cPk, tvwChild, "U" & !Id, !Uname, 5)
其中这个5就是有个想表示图标,它在imagelist中是第五个!
{AddIcon函数根据sfLocal指定的文件名,将与文件象对应的图标添加到ImageList1
中,并将相应的索引添加到slIcon中
sfLocal 本地文件名,须要获得与该文件相关联的图标局柄}
var
sfi:TSHFileInfo;
i:Integer;
begin
//获得文件的扩展名
i:= slIcon.IndexOf(sExt);
if i>-1 then
Result:=i
else
begin
{获得与sfLocal相关联的文件信息,返回
值保存在sfi中,sfi中的hIcon是文件的关联图标局柄}
SHGetFileInfo(PChar(sExt),FILE_ATTRIBUTE_NORMAL,
sfi, Sizeof(sfi),
(SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON ));
{调用ImageList_AddIcon函数将sfi.hIcon添加到图标列表控件ImageList1中}
i:=ImageList_AddIcon(ImageList1.Handle,sfi.hIcon);
//函数调用成功返回值i为图标在imagelist1中的索引,将slIcon中与索引相同的
//string的值设定为sfLocal的扩展名
if i>-1 then
slIcon.Strings[i]:=sExt;
Result:=i;
end;
end;
imagelist1.ListImages.Add [Index],[Key],[Picture]
实例:
imagelist1.ListImages.Add ,"Copy",LoadPicture("c:\Copy.Ico")
首先在Form中加入一个Command1、Imagelist1和Listview1控件,将Imagelist1中加入任意16*16的图片(初始化控件),再加入一个Picture1控件用于图标的缓冲。
然后在Form中插入下列代码:Sub AddFile(FileName As String)'On Error Resume Next
Set ListView1.SmallIcons = ImageList1
Dim hImgSmall As Long
Dim hExeType As Long
Dim imgX As ListImage
Dim ListImgKey As String
Dim itmX As ListItem
If FileName = "" Then Exit Sub
Set itmX = ListView1.ListItems.Add(, , FileName)
If Dir(App.Path + "\temp", vbDirectory) = "" Then MkDir AppPath + "temp"
'生成文件以获得缺省的图标
Open App.Path + "\temp\" + FileName For Output As #1
Close #1
hImgSmall& = SHGetFileInfo(App.Path + "\temp\" + FileName, 0&, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_SMALLICON)
ListImgKey = LCase$(StripNulls(shinfo.szTypeName))
If ImageExisting(ListImgKey, ImageList1) = False Then
If vbAddFileItemIcon(hImgSmall) Then
Set imgX = ImageList1.ListImages.Add(, ListImgKey, Picture1.Picture)
End If
End If
itmX.SmallIcon = ImageList1.ListImages(ListImgKey).Key
Set itmX = Nothing
Kill App.Path + "\temp\" + FileName
End SubPrivate Function ImageExisting(Name, IL As ImageList) As Boolean
On Error GoTo er
ImageExisting = False
If IL.ListImages(Name).Key = Name Then ImageExisting = True
Exit Function
er:
ImageExisting = False
End FunctionPrivate Function vbAddFileItemIcon(hImgSmall&) As Long
Dim r As Long
Picture1.Picture = LoadPicture()
r& = ImageList_Draw(hImgSmall&, shinfo.iIcon, Picture1.hDC, 0, 0, ILD_TRANSPARENT)
Picture1.Picture = Picture1.Image
vbAddFileItemIcon& = hImgSmall&
End FunctionPrivate Sub Command1_Click()
AddFile "a.txt" '只需调用AddFile即可添加,文件a.txt是否存在没有关系,但不能带有路径
End SubPrivate Sub Form_Load()ListView1.View = lvwList
Picture1.Width = 250
Picture1.Height = 250
Picture1.AutoRedraw = True
Picture1.Visible = FalseEnd Sub再添加一个Module1,在里面加入下面代码
Public Const BIF_RETURNONLYFSDIRS = &H1Public Const SHGFI_DISPLAYNAME = &H200
Public Const SHGFI_EXETYPE = &H2000
Public Const SHGFI_SYSICONINDEX = &H4000
Public Const SHGFI_LARGEICON = &H0
Public Const SHGFI_SMALLICON = &H1
Public Const ILD_TRANSPARENT = &H1
Public Const SHGFI_SHELLICONSIZE = &H4
Public Const SHGFI_TYPENAME = &H400
Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or _
SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or _
SHGFI_DISPLAYNAME Or SHGFI_EXETYPE
Public Const MAX_PATH = 260
Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End TypePublic shinfo As SHFILEINFO
Public Declare Function SHGetFileInfo Lib "Shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbSizeFileInfo As Long, ByVal uFlags As Long) As Long
Public Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl&, ByVal I&, ByVal hDCDest&, ByVal x&, ByVal y&, ByVal flags&) As LongPublic Function StripNulls(Item As String) As StringDim pos As Integer
pos = InStr(Item, Chr$(0))
If pos Then Item = Left$(Item, pos - 1)
StripNulls = ItemEnd Function
运行点击Command1看看,是不是看见图标了?
其实通过Imagelist+picture实现的方法我也知道
但是象资源管理器这样的界面难到也要通过这种方法来实现吗?
edeskvb.exe是个好东东,看到这个sdk的vb版,难道vb只有这样作才能实现稍微复杂一些的界面任务吗?
酸辣,结了。