如何实现在同一窗口不同区域,拖放操作不同响应呢?
窗口 比如是 一个CButton 的分割出的几个不同区域,(实际是一个CWnd)把一个CWnd 分割了若干区域,这些区域如何对 Drop 响应不同呢(有些区域接受,有些区域不接受)?要求是一个窗口.
[解决办法]
既然你知道在不同区域进行不同操作,那就判断当前鼠标落在那个区域,然后分别处理
[解决办法]
实现一个IDropTarget接口,用RegisterDragDrop来登记一个窗口使用拖放功能,在DragEnter方法里面根据pt参数来决定是否落到窗口的某个区域,并在pdwEffect参数里返回不同的状态值,Drop方法也同理进行。
[解决办法]
COleDropTarget的本质还是使用IDropTarget接口。
自己定义一个cursor文件(可以使用带Alpha通道的图片),当DragOver时根据鼠标所在的区域,可以用SetCursor来重新设置鼠标形状。
[解决办法]
虽然我认为,可以通过判断不同区域来操作,但这样的设计太差了。
为每一种不同的处理生成一个CWnd的子类,各自处理
然后把这些子类添加到你的目标 CWnd就可以了。
[解决办法]
实现 IDropTarget 接口示例:
http://www.codeproject.com/KB/clipboard/dragdropinterface.aspx
[解决办法]
既然你用MFC,可以直接让窗口从COleDropTarget继承,重载OnDropEnter、OnDropOver、OnDrop等感兴趣的函数,并在OnCreate里面调用Register(this),在OnDestroy里面调用Revoke()
[解决办法]
[解决办法]
帮顶
偶也在寻找此方面资料..
[解决办法]
拖动过程显示半透明图片的例子:
http://www.codeproject.com/KB/shell/dragdrop.aspx
[解决办法]
根据鼠标点击的坐标点所在区域作不同反应