VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 在VB中实现拖放功能
发表评论(0)作者:重庆 杜伟, 平台:VB6.0+Win98, 阅读:11719, 日期:2001-03-18
在VB中实现拖放功能
  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? 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。 (重庆 杜伟)