VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 915|回复: 5

[讨论] 很久很久没来了,深夜造访只为发个问题考考大神们

[复制链接]
发表于 2016-12-29 00:58:06 | 显示全部楼层 |阅读模式
本帖最后由 sunshinebean 于 2016-12-29 01:02 编辑

win7以上系统管理员权限运行的进程,如果收不到WM_DROPFILES消息的话可以用ChangeWindowMessageFilter搞定.(详见:http://blog.csdn.net/whatday/article/details/44278605)
但是这个在vb6里面就是不管用 大伙可以试试看,不管用vb6自带的OLEDragDrop 还是说你自己子类化控件,用WM_DROPFILES消息处理 都是不管用的...

大神们有木有研究过让vb6也支持下呢  我的强迫症犯了,mfc、delphi都测试通过,唯独vb6不行啊。。

发表于 2016-12-29 12:22:31 | 显示全部楼层
如果是来考我们,那就算了。最近项目缠身,没兴趣研究这个。如果是你的项目需要,必须解决这个问题,倒是可以考虑抽时间给你解决一下。
回复 支持 反对

使用道具 举报

发表于 2016-12-29 17:01:27 | 显示全部楼层
  1. Public Declare Function ChangeWindowMessageFilter Lib "user32" (ByVal Message As Long, ByVal dwFlag As Long) As Long

  2. Public Const MSGFLT_ADD As Long = 1

  3. Public Const WM_DROPFILES = &H233
  4. Public Const WM_COPYGLOBALDATA = &H49

  5. ChangeWindowMessageFilter WM_DROPFILES, MSGFLT_ADD
  6. ChangeWindowMessageFilter WM_COPYGLOBALDATA, MSGFLT_ADD
复制代码
需要实现拖放的控件OLEDropMode设置为0,通过DragAcceptFiles定义拖放容器,再子类化控件处理WM_DROPFILES消息即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-30 00:07:33 | 显示全部楼层
原来自己声明API写错了 dwFlag漏了一个byval 导致一直不行。。。粗心啊 唉
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-30 00:25:19 | 显示全部楼层
a591258275 发表于 2016-12-29 17:01
需要实现拖放的控件OLEDropMode设置为0,通过DragAcceptFiles定义拖放容器,再子类化控件处理WM_DROPFILES消 ...

非常感谢这位兄弟,测试了N次 原来是自己API声明 漏打了byval的 一直觉得打了 唉
回复 支持 反对

使用道具 举报

发表于 2016-12-30 14:41:40 | 显示全部楼层
vb 自带的就可以好吧


我一直在用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2017-11-18 14:40

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表