如何实时响应鼠标按下后拖动的消息

比如在树控件或listctrl控件里拖动文件时,控件会根据鼠标的位置实时反映,比如展开树节点。而我在自己的程序里却不能收到鼠标按下时拖动的消息(强调一下,就是鼠标在其他窗... 比如在树控件或listctrl控件里拖动文件时,控件会根据鼠标的位置实时反映,比如展开树节点。而我在自己的程序里却不能收到鼠标按下时拖动的消息(强调一下,就是鼠标在其他窗口按下一个文件,拖动到我的窗口,但我的窗口不能捕获到鼠标WM_MOUSEMOVE的消息)用spy++也发现自己的程序窗口没有捕获到任何消息。
所以想请问一下应该如何设置窗口,才能收到这样的消息。谢谢大家了
1.接收文件的方法我知道,但我想要的不是这种效果。
2.全局钩子是可以的,不过是下策,希望有更好的。
3.刚才用Spy++测试了一下,ttplayer,资源管理器的ListView、TreeView、工具栏,菜单都能够收到在其他程序按下鼠标,并且在他们上面移动的消息,但不是WM_MOUSEMOVE,很奇怪。

这是我用全局钩子的方法,希望大家能够给个更好的方法。

switch ( ((MSG *)lParam)->message )
{
case WM_MOUSEMOVE:
{
//如果左键按下
if ( ((MSG *)lParam)->wParam & MK_LBUTTON )
{
//如果鼠标在目标窗口内移动
if (WindowFromPoint(point)==DesWnd)
{
//转换坐标
::ScreenToClient(DesWnd,&point);
//传递给目标窗口,不能用PostMessage,否知会陷入消息死循环
::SendMessage(DesWnd,WM_MOUSEMOVE,((MSG *)lParam)->wParam,MAKELPARAM(point.x, point.y));
}
}
}
break;
测试代码下载:http://cid-3ba16e78a53d2d3d.office.live.com/self.aspx/VC%5EM%5EM/GetMessage.zip
终于找到解决方法了 http://www.codeproject.com/KB/shell/explorerdragdrop.aspx
展开
 我来答
gbgaobo1
2015-08-04 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:79.3万
展开全部
详细描述一下,什么意思,听不明白
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式