如果已知某程序 A 可以接受资源管理器的文件拖放,那么如何使自己的程序B也能拖动某文件进入程序 A

dash 2004-06-17 10:43:38
rt

thanks
...全文
129 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
dash 2004-06-17
  • 打赏
  • 举报
回复
谢谢大家
会思考的草 2004-06-17
  • 打赏
  • 举报
回复
只有你想改变系统判断拖放何时产生,何时结束,以及在拖放过程中改变光标形状等反馈给用户的行为时,才有必要继承它。
会思考的草 2004-06-17
  • 打赏
  • 举报
回复
确切地说,那种用DragQueryFile、DragQueryPoint、DragFinish进行的拖放,是只能接受文件。而OLE的拖放,则要广义得多,包括很常见的,在编辑器内拖动一段选中的文本、在两个窗口之间拖动图片,都要用OLE来完成。
COleDropSource(它是MFC的封装,没有涉及到COM接口),是用来处理拖放产生的,如果说COleDropTarget代表了拖放操作接受的一方,那么COleDropSource就代表了拖放产生的一方。
它用于决定拖放何时开始,以及在拖放操作中变换光标,决定拖放何时结束(这个类有三个虚函数,分别对应实现这三种功能),等等。
一般来说都无须显式地生成这个类的对象,在COleDataSource的DoDragDrop函数中会自动生成一个COleDropSource对象——如果我们没有显式地给它提供的话。这就是为什么你没有使用它的原因。
dash 2004-06-17
  • 打赏
  • 举报
回复
谢谢 codewarrior(会思考的草), 我的程序基本完成了。

想多问一句,论坛上多人提到IDropSource,但我并没有使用它们。

IDropSource怎么用? 是不是它可以实现包括文件拖放在内的更广义的拖放。
kof99th 2004-06-17
  • 打赏
  • 举报
回复
实现IDropSource接口
会思考的草 2004-06-17
  • 打赏
  • 举报
回复
如果要你的程序能够产生拖放,仅仅需要添加一个COleDataSource成员,然后在OnLButtonDown的时候,用COleDataSource来CacheData,然后DoDragDrop。
有必要点明的是,一旦拖放启动,控制权将由OLE接管,你的程序是接受不到鼠标事件的,也就是说你的程序对整个拖放操作没有一丝控制权。
会思考的草 2004-06-17
  • 打赏
  • 举报
回复
你需要的目标程序必须要能够接受拖放,也就是说,目标窗口必须包含一个COleDropTarget成员并且已经向OLE注册过。
如果它没有注册,连Shell都没有办法让它接受拖放,你的程序还是免了吧。一旦拖放开始启动,被拖到哪里去就不是你的程序能掌握的了,你的程序甚至连哪个窗口接受了拖放都不知道。
会思考的草 2004-06-17
  • 打赏
  • 举报
回复
看这篇我写的文章:
http://dev.csdn.net/develop/article/29/29185.shtm
http://dev.csdn.net/develop/article/29/29186.shtm
http://dev.csdn.net/develop/article/29/29187.shtm
rabo 2004-06-17
  • 打赏
  • 举报
回复
回复人: flyelf(空谷清音) ( ) 信誉:120 2004-06-17 13:32:00 得分: 0


IDropTarget
IDropSource


cngonet 2004-06-17
  • 打赏
  • 举报
回复
帮你顶
jink 2004-06-17
  • 打赏
  • 举报
回复
楼上的那是拖到本程序,楼主要的是拖到其他的程序里

看flyelf(空谷清音) 的
dash 2004-06-17
  • 打赏
  • 举报
回复
接受拖放的不是我的程序。

这有篇文章(How to Implement Drag and Drop Between Your Program and Explorer
) http://www.codeproject.com/shell/explorerdragdrop.asp

可惜我的目的是 Between my program and her program(not Explorer)
lianglp 2004-06-17
  • 打赏
  • 举报
回复
DragAcceptFiles(hwnd,TRUE)就可以了。
那么指定窗口就会收到WM_DROPFILES消息,
然后就可以用DragQueryFile()等函数进行操作了。
flyelf 2004-06-17
  • 打赏
  • 举报
回复
IDropTarget
IDropSource
fzd999 2004-06-17
  • 打赏
  • 举报
回复
Windows外壳编程问题,我没做过,你可以去查一下Shell的资料
Semigod 2004-06-17
  • 打赏
  • 举报
回复
gz
dash 2004-06-17
  • 打赏
  • 举报
回复
没人能指点一下吗???

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧