首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb6 像文件夹同样显示图片的图标

2012-12-28 
vb6 像文件夹一样显示图片的图标比如打开一个文件夹后,看到的图片是这样显示的如下图我想在VB的窗体上也是

vb6 像文件夹一样显示图片的图标
比如打开一个文件夹后,看到的图片是这样显示的如下图



我想在VB的窗体上也是这样显示,然后我把鼠标按住这个图标就可以拖放这种图片到其他地方。

或者用其他方法载入这张图片,然后可以在VB上想资源管理器一样拖放这种图片

我刚学VB不久,求教。

谢谢各位大侠不吝赐教。


[最优解释]
你现在要解决的,首先是如何得到某个文件类型的图标才对.不然后面的都没办法做了,嘿嘿.

给你个例子,显示指定文件的关联图标:

Option Explicit
 
 '获取文件图标的例子
 '窗体上添加一个按钮Command1
 '
 'By 嗷嗷叫的老马
 'http://www.m5home.com
 
 Private Const MAX_PATH As Long = 260
 
 Private Const SHGFI_LARGEICON As Long = &H0
 Private Const SHGFI_SMALLICON As Long = &H1
 
 Private Const SHGFI_TYPENAME As Long = &H400
 Private Const SHGFI_SHELLICONSIZE As Long = &H4
 Private Const SHGFI_SYSICONINDEX As Long = &H4000
 Private Const SHGFI_DISPLAYNAME As Long = &H200
 Private Const SHGFI_EXETYPE As Long = &H2000
 
 Private Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE
 Private Const ILD_TRANSPARENT As Long = &H1
 
 Private Type SHFILEINFO
     hIcon As Long ' : icon
     iIcon As Long ' : icondex
     dwAttributes As Long ' : SFGAO_ flags
     szDisplayName As String * MAX_PATH ' : display name (or path)
     szTypeName As String * 80 ' : type name
 End Type
 
 Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" ( _
      ByVal pszPath As String, _
      ByVal dwFileAttributes As Long, _
      ByRef psfi As SHFILEINFO, _
      ByVal cbFileInfo As Long, _
      ByVal uFlags As Long) As Long
 Private Declare Function ImageList_Draw Lib "comctl32.dll" ( _
      ByVal himl As Long, _
      ByVal i As Long, _
      ByVal hdcDst As Long, _
      ByVal x As Long, _
      ByVal y As Long, _
      ByVal fStyle As Long) As Long
 
 Private Sub Command1_Click()
     Dim hIcon As Long, shInfo As SHFILEINFO
     
     hIcon = SHGetFileInfo("D:\Drawing1.stl", 0&, shInfo, Len(shInfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON) 'SHGFI_SMALLICON就是小图标
     If hIcon <> 0 Then
         Call ImageList_Draw(hIcon, shInfo.iIcon, Me.hdc, 0, 0, ILD_TRANSPARENT)


     End If
 End Sub


[其他解释]
用listview控件。
[其他解释]
使用GDI+来绘制图片到显示界面上。
[其他解释]
  
利用listview的这几个事件,


  DragDrop 在完成拖放操作时发生。 (继承自 Control。)  
  DragEnter 在将对象拖入控件的边界时发生。 (继承自 Control。)  
  DragLeave 在将对象拖出控件的边界时发生。 (继承自 Control。)  
  DragOver 在将对象拖到控件的边界上发生。 (继承自 Control。)  

以及下面的属性

View  获取或设置项在控件中的显示方式。 =  Largeicon

再配合imageLIST加上你的图标图片



[其他解释]
只是显示一张图片   不用listview   有没有标准控件  可以实现的呢
[其他解释]
最好能够详细点  还是很菜的我。。。
[其他解释]
找了一段代码  不过是.net的  谁帮忙翻译vb6  用的    非常感谢。。。

 Private Sub ListBoxFileList_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBoxFileList.MouseMove
'在ListBox中加入图片文件的路径。鼠标拖放里面的项,拖放到PhotoShop里面,可以打开那个图片文件。
'加入Txt文本文件,拖放到支持文本文件格式的另外一个程序,也可以打开。
        If e.Button = Windows.Forms.MouseButtons.Left Then
            If Me.ListBoxFileList.SelectedItem IsNot Nothing Then
                Dim data As DataObject = New DataObject(DataFormats.FileDrop, Me.ListBoxFileList.SelectedItems(0).ToString)
                '//data.SetData(DataFormats.StringFormat, files)
                '//Do DragDrop
                Dim sc As New System.Collections.Specialized.StringCollection
                sc.Add(Me.ListBoxFileList.SelectedItems(0).ToString)
                'MsgBox(sc.Item(0).ToString)
                data.SetFileDropList(sc)
                DoDragDrop(data, DragDropEffects.All)
            End If
        End If
    End Sub

[其他解释]
回楼上:
DoDragDrop(data, DragDropEffects.All)


这个 DoDragDrop() 应该不是 .net 的内部函数吧!
-_-!!!

[其他解释]
引用:
回楼上:
DoDragDrop(data, DragDropEffects.All)


这个 DoDragDrop() 应该不是 .net 的内部函数吧!


-_-!!!




我也不清楚呀 我是复制别人的代码的
[其他解释]
up....谁给翻译下那段代码
[其他解释]
引用:
up....谁给翻译下那段代码


VB没有.net的很多东西,而且关键应该是那句DoDragDrop(data, DragDropEffects.All) 那个是自己编的吧



[其他解释]
引用:
只是显示一张图片   不用listview   有没有标准控件  可以实现的呢


只是编辑一张图片的话,你用picturebox不久可以了吗? 在他的drag事件里面写打开某文件的代码
[其他解释]
晕,那你有得做了.

建议你直接搜索一个VB写的资源管理器代码研究研究算了.
[其他解释]
LZ想实现进程间拖拽操作吧?
应使用对象的OLEDrag方法。
示例:

Option Explicit
'先添加一个ListView,命名为lv
'只要目标程序支持,拖到哪都行
Private Sub Form_Load()
'加载d盘下文件列表
Dim fn As String, path As String
path = "d:"
fn = Dir(path & "*.*")
While fn <> ""
    lv.ListItems.Add , , path & fn
    fn = Dir()
Wend
End Sub

Private Sub lv_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
    lv.OLEDrag   '开始拖动
End If
End Sub

Private Sub lv_OLEStartDrag(Data As MSComctlLib.DataObject, AllowedEffects As Long)
Data.Files.Add lv.SelectedItem.Text   '将选中的文件添加到拖动文件列表中
Data.SetData , vbCFFiles   '发送数据,格式为文件列表
AllowedEffects = AllowedEffects Or vbDropEffectCopy   '只复制,不删除
End Sub

[其他解释]
listview空间也行,直接绘图方式画上去也行。

热点排行