哥们们帮忙看看。比较困难的问题,季老大老请帮帮我。

pp616 2003-04-01 12:12:59
从windows里拖动文件到程序里只要自己处理一下WM_DROPFILES消息就好了。这不是什么难事。相信大家都会的。
现在我想把该操作逆转。我想把TListView中显示的文件拖动到windows的目录里。
我怎么来得到拖放到了什么目录。怎么才能让windows接受我的拖放,或是让程序得到什么消息拖放到了什么具体的地方放开的鼠标。在winrar or winzip里实现了。我看了原来的帖子。没见到解决方法。这里有哥们会的吗。请指点一二。谢谢了。

我不要实现拖放文件。所以用DragDrop组件没用。Delphi基础又不好看DragDrop的代码一头雾水。
我要实现的是从TListView拖动TListItem到windows里的目录上放开。
1。我程序要知道我拖动了拿些TListItem。(这个不是问题我会)
2。拖动到了哪个目录里或是哪个目录上了。
...全文
29 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2003-05-29
  • 打赏
  • 举报
回复
强烈关注
ccrun.com 2003-04-07
  • 打赏
  • 举报
回复
有意思,up一下。
pp616 2003-04-04
  • 打赏
  • 举报
回复
谢谢各位。但是我的意图不是要windows来响应我的拖动。我是需要知道拖到什么地方了。具体的工作需要由我的程序完成。并不是简单的拖拽文件。
myy 2003-04-04
  • 打赏
  • 举报
回复
也许我想的太复杂了,但WinRar确实有Rarext.dll在系统中注了册(xxx\xxx\DropHandler),
我想资源管理器只是调用了它来处理“当文件Drop到Rar,zip文件上的事件”,否则资源管理
器如何知道处理呢?为什么只是“Drop到Rar,zip文件”才处理呢?
halfdream 2003-04-04
  • 打赏
  • 举报
回复
TO:myy(), 不会吧?不会那样的。
不用注册什么的,也不管类型库的什么事,
IDataObject接口包含在ACTIVEX单元,是个基本的接口,你只管它的实现就行了。

myy 2003-04-04
  • 打赏
  • 举报
回复
这个问题比较复杂:

大致上,你要写一个ActiveX Library(最后生成myext.dll),并且要实现
IDataObject,IDropTarget,IDragSource...等接口,
然后用regsvr32.exe myext.dll 注册到注册表(写注册表的操作实际上还是
在你的程序中由DllRegisterServer实现的),可以看看WinRar的rarext.dll
注册地方,主要不同的是多了.....xxx\xxx\DropHandler,rarext.dll另外还实现了
右键菜单和属性页的扩展(*.Rar的属性多了一页压缩信息)。

更详细的,可以参考,有VC的Demo :
http://www.microsoft.com/mind/0399/faq/faq0399.asp

我曾经也想做,研究了到这里,发现太难懂了,就没有继续了。:(
halfdream 2003-04-03
  • 打赏
  • 举报
回复
主要是代码较麻烦.
IDATAOBJECT的九个接口方法要实现,要涉及两个东东..
数据格式TFormatEtc
传输介质TStgMedium

IDataObject的接口方法前六个是各种数据访问方法,后三个是数据变化通知机制.
通知机制在这儿看来是不用实现了,大概SetData方法也不用实现.



halfdream 2003-04-03
  • 打赏
  • 举报
回复
关注一下.
Taiji02 2003-04-03
  • 打赏
  • 举报
回复
请参考这里。

http://expert.csdn.net/Expert/topic/1259/1259719.xml?temp=.1733362
penu 2003-04-02
  • 打赏
  • 举报
回复
关注,我基本上是用shell控件实现的。

用代码实现怎么做呢??好好听课。
COKING 2003-04-02
  • 打赏
  • 举报
回复
晚上贴! 现在不行!!!
Behard 2003-04-02
  • 打赏
  • 举报
回复
mark
WhyAndAnswer 2003-04-02
  • 打赏
  • 举报
回复
学习
wetrust 2003-04-01
  • 打赏
  • 举报
回复
Shell拖放问题
  • 打赏
  • 举报
回复
哈哈,麻烦麻烦。
jishiping 2003-04-01
  • 打赏
  • 举报
回复
如果谁实现了IDataObject界面,麻烦将代码贴出来,让大家共享。
jishiping 2003-04-01
  • 打赏
  • 举报
回复
我知道如何做了(查找Help来的),不过具体的实现,可能还需要不少的代码。方法就是
调用API函数DoDragDrop。这个函数的原型如下:
HRESULT DoDragDrop(
IDataObject * pDataObject, //Data object being dragged
IDropSource * pDropSource, //Instance of IDropSource for source application
DWORD dwOKEffect, //Specifies the effects allowed by the source
DWORD * pdwEffect //Points to effects of the OLE drag and drop on the source
);

你要做的,就是实现IDataObject及IDropSource这2个界面。其中IDropSource很简单,复杂
一点的是IDataObject的实现。楼主可以以“Dragging and Dropping”为索引查找ole.hlp,
这个帮助页面里有详细的说明。
sharkxie 2003-04-01
  • 打赏
  • 举报
回复
请老大们出山!
aawolf 2003-04-01
  • 打赏
  • 举报
回复
关注
chifengwatch 2003-04-01
  • 打赏
  • 举报
回复
gz

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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