真的高手在么!(100分)

  • 主题发起人 主题发起人 Tianqiang.liu
  • 开始时间 开始时间
T

Tianqiang.liu

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样知道我的鼠标离开的当前的窗口?
 
必须先capture鼠标。然后,即使是移到窗口外的WM_MOUSEMOVE消息也会被送到你的窗口函数。<br>
 
能详细一点吗
 
使用下面这两个Delphi提供的消息。<br>procedure MouseEnter(var message:TMessage);message &nbsp;CM_MOUSEENTER; //鼠标进<br>procedure MouseLeave(var message:TMessage);message &nbsp;CM_MOUSELEAVE; //鼠标出<br>
 
帮忙帮到底,能再指点一二(或更详细一点<br>)
 
将<br>procedure MouseLeave(var message:TMessage);message &nbsp;CM_MOUSELEAVE; //鼠标出<br>写在声明的public里面。<br>然后在程序里面写<br>procedure TForm1.MouseLeave(var message:TMessage);message &nbsp;CM_MOUSELEAVE; //鼠标出<br>begin<br>&nbsp; ShowMessage('鼠标移走了!');<br>end;<br><br>
 
我这么菜都知道,你别把高手贬低呢[:)][:)]
 
这样判断好像只能是在移到当前窗口的某个控件上面才会有的,而移到窗体外不点击其它窗体<br>则不能捕获leave事件。我觉得是得到当前鼠标的位置,然后判断是不是在当前form的矩形<br>范围内!
 
我试过还是不行,当鼠标一离开还没有点击就触发了。
 
看来只有使用Hook了?
 
呵呵!简单!加入一个Mouseleave事件即可!<br>看看我的帖子,就是什么Animogoo(名字可能拼错)发的那个征集代码的帖子!<br>我提供了一个可以为所有控件加上Mouseleave事件的通用代码。
 
微软有很多以WM_NC开头的消息,你可以看一下WM_NCMOUSEMOVE,<br>检查一下当前的鼠标坐标是否在当前窗体内。<br>希望对你有帮助。<br>
 
多人接受答案了。
 
后退
顶部