mb窗口:1. 如何响应外部拖拽?2. 能否增加COleDataTarget开关?

一直想让mb的窗口响应外部的拖放操作,实际做的过程中遇到一连串的问题
1 关于如何响应外部拖拽
扫地僧已经做好了mb窗口内页面文字的拖放,比如将当前页面的文字拖到当前页面的input
但如果从外部拖到mb窗口就不行,比如从ie打开的网页中拖几个文字到mb窗口
在扫地僧还没增加这个功能之前,我该怎么办呢?在QQ群里大家指点了下,有了点思路
(1)c++解决方案:(叙述简便,以下略过c和js互动环节)
其一:mb窗口子类化,然后在回调中拦截拖放操作的消息
问题:我不知道拦截哪个消息,WM_LBUTTONUP吗,如果我是从ie拖了几个字过来,如何在拦截到WM_LBUTTONUP后获取实际被拖过来的内容?
其二:想用MFC提供的Ole对象拖放功能尝试获取拖过来的内容
问题:创建A对话框,放个Edit,载入COleDataSouroe,拖几个字过来,放到mb窗口中,没啥反应的,貌似mb没有载入COleDataTarget并Register()?
如果在A对话框拖动文字的时候将文字保存到本地txt,然后在mb子类化后的回调中的WM_LBUTTONUP处理部分去读这个txt,从而获得拖动的是什么内容,这样mb也不需要COleDataTarget了,貌似可行,但没有简单的办法了吗?拖过来的东西因mb没有COleDataTarget,在mb窗口中显示的鼠标是一个圆圈中间一个斜杠(禁止符号),但WM_LBUTTONUP却有反应,这样会让操作者精分么?再拦截多一个鼠标图标显示修改的消息?那就轮到我要精分了。
(2)js解决方案
在mb要显示的页面上添加js:
someonediv.addEventListener('dragenter', function (e) {....},false);
someonediv.addEventListener('dragover', function (e) {....},false);
someonediv.addEventListener('dragleave', function (e) {....},false);
someonediv.addEventListener('drop', function (e) {....;alert('hello');},false);
然后拖ie的文字到mb窗口,是没有反应的,但是如果先在mb的页面上随便选几个字拖一下,随后ie的文字再拖过来,mb窗口就能弹出"hello"了
因此,如何让这个addEventListener的dragenter等事件在mb加载页面过程中自动执行一下,以激活mb能够接受外部内容拖放的响应呢?到时候再通过js通知c进行相关操作就能拿到拖的是啥内容了。
 
2. 关于mb能否增加COleDataTarget开关
为什么增加就见上不用赘述了,mb有源码版?
 
本人水平太水,以上问题略显低级兼粗糙,还请见谅,还请指教,谢谢!
已邀请:

要回复问题请先登录注册