看到傲游中提供的超级拖放很是方便,但是IE中却没有提供,但是现在IE 8 用着很好,于是就琢磨着自能否让IE 也支持此功能呢,Google一下很多都是VC++的资料,而且没有完整的代码,但是有一篇的文章给出了完整的思路,这里很感谢此作者,原文链接:http://blog.csdn.net/drong/archive/2007/03/05/1520698.aspx
通过该作者的思路对控件进行了改写。当然本文只是思路的一种,写出来之后必须要自写浏览并使用生成的控件才能使用超级拖放功能,当然也可以写IE 插件来直接在IE 上实现,网上有已经写好的,但是我们编程能自己写会学到更多。
简介:
要实现超级拖放功能,就必须要实现IDocHostUIHandler和IDropTarget这两个接口(详细见MSDN),当Mshtml在需要的时候就会调用IDocHostUIHandler接口中的GetDropTarget方法,其中该方法中有两个参数,一个是传入参数pDropTarget,是默认的拖放操作对象,而输出参数ppDropTarget使我们可以注册我们自己希望来处理拖放的操作对象,并且保存原有pDropTarget对象,当用户往文本编辑框中拖放时就可以调用IE原有的默认操作,而不用我们去实现,实际上实现起来也相当的麻烦。IDocHostUIHandler接口主要是注册当然的控件本身来处理拖放操作,而IDropTarget接口则会在发生DragEnter、DragOver、Drag、DragLeave被调用,在这里我们就可以对事件进行处理,