wxWidgets的drag和drop
来源:互联网 发布:mac可以用盗版软件吗 编辑:程序博客网 时间:2024/05/21 19:38
在两个不同窗口之间的drag和drop,或者是从应用程序外面传进来的drop(如从某个文件夹拖入文件到应用程序的窗口中),需要下面的知识:
接收drop的窗口:
1、接受drop的窗口在初始化的时候用SetDropTarget()方法来说明自己接受某类物体的drop;
2、SetDropTarget()的参数是一个wxDropTarget的子类,常用的有wxTextDropTarget、wxFileDropTarget,都必须包含dnd.h;
3、如果自己从wxDropTarget派生子类,可以重载OnData()来过滤自己喜欢的信息;
注意:
SetDropTarget()必须在窗口创建后再调用,如果发现按照文中的步骤做了,但是drap到目标窗口的时候,依然不能正常drop,首先需要查的就是这一点。
产生drag的窗口:
1、建立(new)一个DropSource,在wxWidgets中,就是“wxDropSource”。这个源包含了drag的信息。
2、然后程序可以用类似wxDropSource.DoDragDrop()的方式执行这个drag过程。
内部原理:
如果在释放鼠标左键的时候,window内部会检查当前鼠标在的窗口是否是一个DropTarget(),是就会调用上面的参数中的OnData()。
上面一段也说明了drag的信息,drop的源就是drag产生出的Drop source。
陷阱:
貌似最简便的方式是利用C++的继承能力,从wxTextDropTarget等继承。只要3步:
1、继承 wxTextDropTarget;
2、声明和实现父类的虚函数;
3、在创建窗口的时候,用SetDropTarget(this)设置自己成为一个接受相关drop的目标。
这样,一个对应的源,就可以被拖到我们现在的窗口了。
问题在于,wxWidgets会在某个析构的函数里面试图删除SetDropTarget()中送入的参数,因此事实上刚才的只是个美丽的设想。不能实现。
- wxWidgets的drag和drop
- 关于QListWidget的Drag和Drop用法
- HTML5 drag和drop的实践
- HTML5 drag和drop的亲手实践
- html5的拖放(Drag 和 drop)
- Qt drag和drop演示
- HTML5 拖放(Drag和drop)
- HTML5 拖放(Drag和drop)
- Android4.0以下View的Drag和Drop简单实现
- flex day 5 air的drag和drop
- HTML5中拖放Drag和drop的用法
- Tree控件的Drag&Drop
- Richfaces的Drag Drop支持
- JavaScript -- drop,drag的使用
- Drag &Drop
- Drag & Drop
- DRAG & DROP
- Drag Drop
- 使用Spring MVC HandlerExceptionResolver处理异常
- Delphi 显示选择文件夹对话框 (有新建按钮)
- android assets文件夹应用
- ORACLE RMAN备份及还原
- HTML5移动Web应用程序的JavaScript 框架
- wxWidgets的drag和drop
- 检测鼠标指针的改变(全局) Delphi
- openkm6.0发布,可以部署到tomcat上面了。
- js 浏览器兼容问题
- 简单电池电量显示
- 下午到华信医院骨科拍片子
- HDR文件格式简介
- 关于 class helper for ... 语法
- Java编码问题汇总