在VB中实现拖放功能 杜伟 2001年 2期 Windows资源管理器中使用文件的拖放可以很方便地对文件进行复制、移动,其实要实现拖放功能只要在VB中设置一下,写入几行代码就可以搞定!好了,下面我们就开始自己手动来实现这个功能吧。    首先,新建一个工程。再加入一个Command1控件,将Caption属性设置为“我的拖放程序”,再将OLEDropMode设置为1(即Manual)即可实现拖放动能,当然要真正实现拖放的过程还得写入几行代码才行。    下面就是实现拖放功能的代码:    双击Command1控件,选择OLEDragDrop事件,代码如下:    Private Sub Command1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)    If Data.GetFormat(vbCFText) = True Then    Me.Caption = Data.GetData(vbCFText)    End If    End Sub    以上代码作用是将用户拖过来的文字显示在窗体中的标题栏(即Caption)中。单击“F5键”运行该程序,然后用写字板输入一句话,将文字全部选中,再将选中的文字拖动到Command1控件中,此时你将发现窗体中的标题栏中显示的就是拖动来的文字。    以下代码是显示用户拖动过来的图片文件:    首先,引入Picture1控件,其设置与Command1相同,将其OLEDropMode设置为1。然后双击Picture1控件,选择OLEDragDrop事件,输入以下代码:    Private Sub Picture1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)    If Data.GetFormat(vbCFFiles)= True Then    Picture1.Picture = LoadPicture(Data.Files.Item(1))    End If    End Sub    单击“F5”键运行该程序,将图片文件拖动到Picture1控件中即可在Picture1中显示出该图片来。要注意的是:Picture1控件只能显示BMP、JPG、WMF、ICON文件,而GIF动画及PSD等文件格式无法显示。    上面介绍如何接收拖动过来的文字及图片,下面介绍如何打开拖动过来的文件,且用与之关联的程序来打开。其代码如下:    首先,引入Text1控件,将OLEDropMode设置为1。再新建一个模块,在Module1中输入以下代码:    Public Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String,ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long    再双击Text1控件,选择OLEDragDrop事件,输入以下代码:    Private Sub Text1_OLEDragDropData As DataObject(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)    If Data.GetFormat(vbCFFiles) = True Then    Dim GetFilePathStr As String    Dim W    Dim i As Integer    If Data.Files.Count > 1 Then '如果是拖放的多个文件则依次打开    For i = 1 To Data.Files.Count    GetFilePathStr = Data.Files.Item(i)    W = ShellExecute(0&, vbNullString, GetFilePathStr, vbNullString, vbNullString, vbNormalFocus)    Next    Else '如果只有一个文件    GetFilePathStr = Data.Files.Item(1)    W = ShellExecute(0&, vbNullString, GetFilePathStr, vbNullString, vbNullString, vbNormalFocus)    End If    End If    End Sub    单击“F5”键运行该程序,将任意一个文件拖放到Text1控件中,程序将启动相应的程序来打开它。如拖动MyFile.Doc文件到Text1控件中,程序将自动启动Word并打开该文件;如果我选择了多个文件并拖动到Text1控件中,程序将依次打开所选定的文件。    如果你还有什么问题,欢迎来信与我交流。我的E-mail地址是:vber99@yeah.net.