**高手进,讨论一下拖拽(drag&drop)时的SetTimer问题**

hawkxjy 2005-07-28 10:21:55
我现在做一个应用其中需要在不同窗口间实现拖拽某对象的功能,通过封装实现了IDataObject,IDragSource,IDropTarget等com接口实现了拖拽。可现在需要在拖拽的目标窗口上加一个timer的功能(比如说当拖动一个对象到目标窗口的某个范围时就要启动一个timer来进行某些操作)。。。。

我在拖拽的DragOver中添加了判断,在需要时用SetTimer为目标窗口设定了计时器。然而奇怪的时此后目标窗口并没有响应到wm_timer消息(系统根本没发送此消息)!更奇怪的时当我不释放鼠标左键切换一下窗口后,再切换回来时发现,这个过程里系统又发送了wm_timer消息!!这是怎么回事??


高手给个解答
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
longx 2005-07-29
  • 打赏
  • 举报
回复
wm_time 消息优先级低,由于在拖拽过程中会不断产生消息,所以会 wm_time 消息会被丢弃,必须考虑使用别的方式实现你的功能。
会思考的草 2005-07-29
  • 打赏
  • 举报
回复
timer显然是必须的,判断DragScroll和DragHover时必须。楼主还是去参考一下MFC的类CDropTarget。
会思考的草 2005-07-29
  • 打赏
  • 举报
回复
印象中mfc使用的是多媒体定时器。
hawkxjy 2005-07-29
  • 打赏
  • 举报
回复
同意楼上,我也感觉是系统没有发送出wm_timer消息。可也想不出更好的解决办法。。
hawkxjy 2005-07-28
  • 打赏
  • 举报
回复
呵呵,急着用呢,怎么没个人顶一下??
krfstudio 2005-07-28
  • 打赏
  • 举报
回复
没看懂,楼主写清楚一点,什么叫做“在需要时”

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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