计算机二级:用OLE实现文件拖放计算机二级考试

文章作者 100test 发表时间 2009:04:30 06:46:48
来源 100Test.Com百考试题网


  用文件拖放可以使我们方便的打开程序所支持的文件,比如我们直接把一首歌曲(mp3)从资源管理器Explore中直接拖放到我们自己写的多媒体播放器上,播放器就能得到放下的文件的路径,然后自动的打开它。这也是流行软件所常用的技巧。下面介绍的小程序,采用VB6所提供的OLE拖放功能,仅用十几行代码就实现了文件拖放。
  为了学习方便,提供的源码已经作了详细的中文注释,看看代码:
  程序说明:
  本例是实现文件从EXPLORE到VB应用程序拖放的又一种
  方法,与采用API函数实现的方法相比,这种方法更简
  单易懂。
  OLE拖放是可在 Visual Basic 应用程序中添加的最强
  大、最有用的功能之一就是在控件和控件之间、在控件
  和其它 Windows 应用程序之间拖动文本和图形。有了
  OLE,就可将这种功能引入到应用程序中。
  ------------------------------------------
  Option Explicit
  Private Sub Form_Load()
  经过声明Picture1成为接受文件拖放的一个OLE容器
  Picture1.OLEDropMode = 1
  End Sub
  Private Sub Picture1_OLEDragDrop(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single)
  Dim i As Integer
  检查放下的东西是不是文件名
  If data.GetFormat(vbCFFiles) = True Then
  Dim sFileName$
  只读取第一条记录的信息
  sFileName = data.Files(1)
  如果不是图片文件则转向错误处理
  On Error GoTo invalidPicture
  依次读取各条记录,并把文件名添加在列表框中
  For i = 1 To data.Files.Count
  List1.AddItem data.Files(i)
  Next i
  将图片显示在图片框中
  Picture1.Picture = LoadPicture(sFileName)
  End If
  Exit Sub
  invalidPicture:
  显示错误信息
  DisplayPicture1Message
  End Sub
  Private Sub DisplayPicture1Message()
  清除图片框中的图片
  Picture1.Picture = LoadPicture()
  Const Msg As String = "Invalid Picture Format!"
   在图片框中显示错误信息,这个用法很少见
  Picture1.CurrentX = (Picture1.ScaleWidth 2) - (Picture1.TextWidth(Msg) 2)
  Picture1.CurrentY = (Picture1.ScaleHeight 2) - (Picture1.TextHeight(Msg) 2)
  Picture1.Print Msg
  End Sub
  当鼠标拖着东西移过图片框时
  Private Sub Picture1_OLEDragOver(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single, State As Integer)
  检查移过图片框的是不是文件(象“回收站”就不是文件)
  If data.GetFormat(vbCFFiles) Then
  显示可以放下的图标,是带小加号的那种
  effect = vbDropEffectCopy And effect
  Else
  否则显示不可放下的图标,是圆圈加斜线那种
  effect = vbDropEffectNone
  End If
  End Sub
  -----------------OLE拖放简介--------------------
  可在 Visual Basic 应用程序中添加的最强大、最有用的功能之一就是在控件和控件之
  间、在控件和其它 Windows 应用程序之间拖动文本和图形。有了 OLE,就可将这种功能
  引入到应用程序中。
  使用 OLE 拖放时,并不是把一个控件拖动到另一个控件并调用代码(象本章前面讨论的
  拖放一样);而是将数据从一个控件或应用程序移动到另一个控件或应用程序。例如,用
  户先选定并拖动 Excel 中的一列单元,然后将它们放到应用程序的 DBGrid 控件上。
  Visual Basic 的几乎所有控件都在某种程度上支持 OLE 拖放。(由 Visual Basic 专
  业版和企业版提供的)下述的标准控件和 ActiveX 控件自动支持 OLE 拖放,这意味着无
  论是从控件拖出还是在控件内放入都不需要编写代码:
  Apex       DBGrid      Picturebox     Richtextbox
  Image      Textbox     Maskededitbox
  为对这些控件启动自动 OLE 拖放,应将 OLEDragMode 和 OLEDropMode 设置为“自动话”。
  ------------------------------
  可用下列 OLE 拖放属性、事件和方法指定已知控件响应拖放的方式。
  类别    项目           描述
  属性    OLEDragMode    启动控件的自动拖动或手工拖动(若控件支持手工拖动但不支持自动 OLE 拖动,则它不具有此属性,但支持 OLEDrag 方法和 OLE 拖放事件)。
          OLEDropMode    指定控件如何响应放操作。
  事件    OLEDragDrop    识别源对象何时被放到控件上。
          OLEDragOver    识别源对象何时被拖动经过控件。
          OLEGiveFeedback 以源对象为基础向用户提供自定义拖动图标反馈。
          OLEStartDrag    在启动拖动时,源支持哪种数据格式和放效果(复制、移动或拒绝数据)。
          OLESetData     在放源对象时提供数据。
          OLECompleteDrag 当把对象放到目标时通知被执行的操作的源。
  方法    OLEDrag        启动手工拖动。
  -------------------------------
  本例中用到的属性和方法:
  OLEDragMode  -------返回或设置是由部件还是由程序员来处理 OLE 拖放操作。
  属性:              0 表示为手工拖放   1 表示为自动拖放
  我们设为 1 是自动拖放模式,这时我们要用OLEDragDrop,OLEDragOver事件来控制拖放操作
  
  OLEDragDrop  -------当源部件决定放操作能发生,且源部件被放到目标部件时,此事件发生。
  语法:Private Sub object_OLEDragDrop(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single)
  OLEDragDrop 事件语法包含下面部分:
  部分    描述
  object  对象表达式,其值是“应用于”列表中的一个对象。
  data    DataObject 对象,包含源提供的格式,另外也可能包含这些格式的数据。若 DataObject 不包含数据,则当控件调用 GetData 方法时提供数据。SetData 和 Clear 方法不能用在这里。
  effect  源对象设置的长整型数,用来识别执行的动作,这样当部件被移动后允许源采取适当的动作(例如,如果源被从一个部件移到另一个部件,则执行删除数据操作)。可能的取值列于“设置值”中。
  button  整数,当按下鼠标键时,与鼠标状态相对应。左键为位 0,右键为位 1,中键为位 2。这些位相应的值分别为 1,2 和 4,它代表了鼠标键的状态。可设置三个位中的部分、全部或根本不设置,相应地表明部分、全部按键被按下或没有按键按下。
  shift   整数,当按下 SHIFT、CTRL 和 ALT 键时,与这些键状态相对应。
          SHIFT 键为位 0,CTRL 键为位 1,ALT 键为位 2。这些位相应的值分别为 1,2 和 4,shift 参数代表了这些键的状态。可设置三个位中的部分、全部或根本不设置,相应地表明部分、全部按键被按下或没有按键按下。例如,同时按下 CTRL 和 ALT 键,shift 值为 6。CTRL
  x,y     确定鼠标指针当前位置的数值。x 和 y 值由对象的 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性设置的坐标系统的格式来表示。
  -----------------------------
  其中 effect 参数的设置如下:
  常数                值  描述
  vbDropEffectNone    0   放目标不接受数据。
  VbDropEffectCopy    1   放结果保存于从源到目标的数据拷贝中。初始数据没有被拖放操作改变。
  VbDropEffectMove    2   放结果保存于要从拖放源移到放源的数据中。移动后,拖放源要删除数据。
  ------------------------------
  OLEDragOver -----------当一个部件在另一个部件上拖动时发生。
  其参数与OLEDragDrop的参数类似。
  ------------------------------
  OLE拖放是可在 Visual Basic 应用程序中添加的最强大、最有用的功能之一,利用它可以在控件和控件之间、在控件和其它 Windows 应用程序之间拖动文本和图形。VB中的大部分控件都是支持OLE拖放,但默认状态下控件的OLEDropMode属性是设为0,也就是不允许拖放的。如果我们要使用OLE拖放,必须先把OLEDropMode属性设为1,这样控件才成为接受文件拖放的一个OLE容器。

  2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  2009年全国计算机等级考试报名信息汇总

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  2009年上半年全国计算机二级考试试题及答案

  2009年上半年全国计算机等级考试试题答案汇总



相关文章


2003年9月全国计算机等级考试二级VB语言笔试试题及答案计算机二级考试
2003年4月全国计算机等级考试二级VB语言笔试试题及答案计算机二级考试
VB辅导:如何建立一个VB.NET日期_时间值计算机二级考试
计算机二级:在状态栏中显示帮助信息计算机二级考试
计算机二级:用OLE实现文件拖放计算机二级考试
计算机二级VB辅导:可以换肤的窗体计算机二级考试
二级VB辅导:VB中自动提示保存修改后的文件计算机二级考试
VB辅导:用BASIC语言写智能手机程序计算机二级考试
vb.net实现简单的眼睛保护系统计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛