20 12
发新话题
打印

如何从应用程序拖放文件到explorer(非阻塞)?

如何从应用程序拖放文件到explorer(非阻塞)?

我的程序是一个对话框, 上面有一个ListCtrl, 我使用COleDataSource来实现文件拖放(到资源管理器). 但是当拖放一个比较大的文件时, 我的程序就进入阻塞状态, 也即拖放操作没有完成之前, 我的程序无法响应.  下载了CodeProject上的所有拖放的例子来试验, 也是这样的情况. 但我看到很多程序都可以实现异步的拖放, 请问各位是如何解决这个问题的?? 程序是vc编写.

TOP

你的程序一直在工作,没有时间响应窗口的消息。应该是这种情况。因为你响应拖放的代码是在主线程运行的。
用完成端口是一种办法。比较麻烦,但是是效果最佳的。
或者在你的程序提供数据的过程中处理窗口的消息。也就是说,不要一口气提供全部数据,分成小块给它,在中间处理窗口消息。
具体情况要看程序怎么处理的。
单如暴雨哗哗下
刀似长江滚滚来
横批:韩信点兵

TOP

进来学习一下的
你才是国家队的,你全家都是国家队的

TOP

引用:
原帖由 浅释 于 2008-3-11 18:09 发表
进来学习一下的
晕。
单如暴雨哗哗下
刀似长江滚滚来
横批:韩信点兵

TOP

引用:
原帖由 wandou 于 2008-3-11 18:03 发表
你的程序一直在工作,没有时间响应窗口的消息。应该是这种情况。因为你响应拖放的代码是在主线程运行的。
用完成端口是一种办法。比较麻烦,但是是效果最佳的。
或者在你的程序提供数据的过程中处理窗口的消息。也 ...
这位仁兄想必没有作过拖放吧,

TOP

自己解决吧。懒得讲了。
单如暴雨哗哗下
刀似长江滚滚来
横批:韩信点兵

TOP

另外开一个线程,或者使用IO完成.

TOP

引用:
原帖由 hacker47 于 2008-3-11 18:37 发表
另外开一个线程,或者使用IO完成.
我试过另开一线程, 不能达到目的

[ 本帖最后由 Pluto 于 2008-3-11 18:59 编辑 ]

TOP

引用:
原帖由 wandou 于 2008-3-11 18:36 发表
自己解决吧。懒得讲了。
呵呵, 我看这位仁兄并不是"懒的讲", 而是自己都没有试过你的方法吧,

[ 本帖最后由 Pluto 于 2008-3-11 19:10 编辑 ]

TOP

自力更生不就完了,问别人做什么。别人又不是api手册,专门回答你的提问。你觉得不对,不用就是了。有什么好啰嗦的。
单如暴雨哗哗下
刀似长江滚滚来
横批:韩信点兵

TOP

 20 12
发新话题