我用DELPHI做了一个类似QQ界面的小工具,但有一点我没有实现,希望各位高手大哥大姐们帮帮忙!
我就是想实现当软件窗体接着WINDOWS窗口最上方时自动收起来!
也就是像QQ一样,可以收到WINDOWS窗口上方里面.当鼠标一接近上方时.它又自动放下来!
想了很久都不知道怎么实现!
希望各位高手们能帮帮我!
在这里先谢了!

解决方案 »

  1.   

    很简单啊. 用个Timer就搞定了, Timer的Interval也不用太小, 50-100ms足够了, 这样基本不占系统资源.在窗口移动消息中判断form.Top是否靠近顶端(比如Form.Top <= 5), 如果是就准备隐藏Form, 开一个Timer, 在Timer中检测当前鼠标是否还在form范围内, 如果不在了就用个循环不断减Form.top的值直到Form.Top+Form.Height <= 0(动画隐藏) 或者 直接设置Form.Top := - Form.Height. 要显示只要在timer中判断当前鼠标位置(用GetCursorPos可以获得鼠标位置)是否靠近屏幕顶部并且(x>=Form.Left) and (x<Form.Left+Form.Width), 如果鼠标在这个范围内就用SetForegroundWindow把Form激活并不停增加Form.Top直到整个form都显示出来为止.
      

  2.   

    能不用timer就不用,既然在窗口的mouseleave消息里判断,要timer作甚?
      

  3.   

    Idle_(阿呆) 的方法已经可以实现了
      

  4.   

    mouseenter, mouseleave并不准确, 移动鼠标过快时有可能不会触发. 
    用Timer保险