微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题在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.