| 用文件拖放可以使我们方便的打开程序所支持的文件,比如我们直接把一首歌曲(mp3)从资源管理器Explore中直接拖放到我们自己写的多媒体播放器上,播放器就能得到放下的文件的路径,然后自动的打开它。这也是流行软件所常用的技巧。下面介绍的小程序,采用VB6所提供的OLE拖放功能,仅用十几行代码就实现了文件拖放。 为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码: OLE拖放是可在 Visual Basic 应用程序中添加的最强大、最有用的功能之一,利用它可以在控件和控件之间、在控件和其它 Windows 应用程序之间拖动文本和图形。VB中的大部分控件都是支持OLE拖放,但默认状态下控件的OLEDropMode属性是设为0,也就是不允许拖放的。如果我们要使用OLE拖放,必须先把OLEDropMode属性设为1,这样控件才成为接受文件拖放的一个OLE容器。 如右图所示:我们把PictureBox的OLEDropMode属性设为1,这样PictureBox就能够接受从WINDOWS资源管理器Explore或是其它程序中拖放的文件或图片。我们也可以在代码中设置这个属性。这就是上面源码框中Picture1.OLEDropMode = 1语句的含义。 下面我们来看看本例中用到的OLE拖放的事件和方法。 ●OLEDragDrop事件:意义是当控件允许放下的动作,并且有东西在控件上放下的时刻发生。当此事件发生时程序会去执行Sub object_OLEDragDrop()子过程的代码,所以我们必须在其中加入程序来响应此事件。在本例中,程序要判断放下东西的类型是不是图片文件,共有几个图片文件,然后在PictureBox中显示图片,并把文件的路径在列表框中列出来,总之我们可以根据自己的需要写这段代码。 OLEDragDrop 事件的语法为: Sub object_OLEDragDrop( data As DataObject, DataObject对象,包含放下的数据,具体的格式参见源码注释; effect As Long, 用来识别执行的动作; button As Integer, 整数,与鼠标状态相对应。左键为0,右键1,中键2; shift As Integer, 整数,当按下SHIFT、CTRL和ALT键时,与这些键状态相对应; x As Single, x,y 确定鼠标指针当前位置的数值; y As Single ) ●OLEDragOver事件:意义是当鼠标拖着东西在控件上移过时发生,当此事件发生时程序会去执行Sub object_OLEDragOver()子过程的代码,本例中我们用程序判断鼠标拖动的是不是文件,如果是则显示“允许放下”的鼠标指针,否则显示“禁止放下”的鼠标指针。 用OLE实现文件拖放,代码简单易懂,而采用另外一种方法API函数实现起来就比较复杂,但是可以实现更加灵活的功能,有兴趣的话你也可以参照一下API实例解析中的相关内容。 |