怎么让Timage获取鼠标离开主窗口的消息
如何让Timage获取鼠标离开主窗口的消息
如题
我在TMyImage(自己派生的类)里想获取到鼠标离开主窗口的消息
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
这个消息是鼠标离开控件自身的时候响应的
procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE;
这个好像没有响应
我想两个消息都可以响应到
------解决方案--------------------
CMMouseLeave写到主窗体,然后由主窗体给你的组件发消息或广播消息
------解决方案--------------------
WM_MOUSELEAVE这个消息处理起来有点复杂,先说说那些情况会触发此消息
鼠标从窗口到桌面,这个会,这好理解
但在窗口内,从窗口区域到控件,也会触发,甚至窗口到标题上,也触发
就是说:只要从窗口到任意不是窗口区域的地方都会触发,所以系统默认是不给窗口响应WM_MOUSELEAVE消息的
真要用的话,可以用TrackMouseEvent这个API去启动它,参数是一个tagTRACKMOUSEEVENT结构体,自己看看tagTRACKMOUSEEVENT的源码,4个成员变量,很好理解的;
在OnMouseMove事件中调用TrackMouseEvent就行了
如题
我在TMyImage(自己派生的类)里想获取到鼠标离开主窗口的消息
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
这个消息是鼠标离开控件自身的时候响应的
procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE;
这个好像没有响应
我想两个消息都可以响应到
------解决方案--------------------
CMMouseLeave写到主窗体,然后由主窗体给你的组件发消息或广播消息
------解决方案--------------------
WM_MOUSELEAVE这个消息处理起来有点复杂,先说说那些情况会触发此消息
鼠标从窗口到桌面,这个会,这好理解
但在窗口内,从窗口区域到控件,也会触发,甚至窗口到标题上,也触发
就是说:只要从窗口到任意不是窗口区域的地方都会触发,所以系统默认是不给窗口响应WM_MOUSELEAVE消息的
真要用的话,可以用TrackMouseEvent这个API去启动它,参数是一个tagTRACKMOUSEEVENT结构体,自己看看tagTRACKMOUSEEVENT的源码,4个成员变量,很好理解的;
在OnMouseMove事件中调用TrackMouseEvent就行了