如题我在TMyImage(自己派生的类)里想获取到鼠标离开主窗口的消息
   procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
这个消息是鼠标离开控件自身的时候响应的
   procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE;
这个好像没有响应我想两个消息都可以响应到

解决方案 »

  1.   

    CMMouseLeave写到主窗体,然后由主窗体给你的组件发消息或广播消息
      

  2.   

    这里我是把TmyImage当作一个按钮控件用的
    就是当鼠标离开按钮  或 鼠标离开窗口的时候   按钮上的图片会变我想把所有的按钮效果的东西都封装起来,我只要create就能用了如果靠主窗体发消息 那样代码会很乱  而且当界面上按钮多的时候 会很麻烦
      

  3.   

    WM_MOUSELEAVE这个消息处理起来有点复杂,先说说那些情况会触发此消息
    鼠标从窗口到桌面,这个会,这好理解
    但在窗口内,从窗口区域到控件,也会触发,甚至窗口到标题上,也触发
    就是说:只要从窗口到任意不是窗口区域的地方都会触发,所以系统默认是不给窗口响应WM_MOUSELEAVE消息的真要用的话,可以用TrackMouseEvent这个API去启动它,参数是一个tagTRACKMOUSEEVENT结构体,自己看看tagTRACKMOUSEEVENT的源码,4个成员变量,很好理解的;
    在OnMouseMove事件中调用TrackMouseEvent就行了