WM_WINDOWPOSCHANGED中传递有位置参数
再用ShowWindow

解决方案 »

  1.   

    用getcursorpos好象可以吧,我曾经编程模拟过它的自动隐藏动作,没有其他任何功能!具体操作大概如下:1) 新建一个工程project,然后在form1放置一个timer组件,适当的设置时间,当然越小反应
        越快,然后双击它的ontime事件生成一个procedure,过程代码如下:
    var
      i:Tpoint;
    begin
      getcursorpos(i);  //获得当前鼠标的位置;
      if form1.top<=0  then   //窗体上端位置在<=0的位置时,才能缩进去;
        with form1 do
          if (i.x>left+width) or (i.x<left) or (i.y>top+height) //判断鼠标位置
            then 
            begin
                  top:=0;    //把窗体上端位置设为0;
                  height:=3;  //窗体缩进去;
                  borderstyle:=none;
                  Timer1.Enabled:=false; 
                end;
      end;2) 当鼠标移到窗体上时,窗体弹出来,因此可在在窗体的OnMouseMove事件当中,
        写下如下的代码:
          begin
            with form1 do
              begin
                Height:=你原来设置的窗体高度;
                borderstyle:=bsSizeable;
                Timer1.Enabled:=true;
              end;              
         
     还有就是刚开始运行时,即使鼠标不在窗体上,窗体也没有缩进去,而是过了一秒钟才缩进去
    如果要想刚开始就让他缩进去,那么在窗体的Oncreate事件中写上如下代码:
    begin
      timer1timer(nil);
    end;现在基本上差不多了,那么程序运行后的执行为:
    首先timer1启动判断过程,判断鼠标是否在窗体上,如果在,那么不做任何事情;如果不在,
    则窗体缩进去,同时timer1的enabled变为false,timer1不再运行;当鼠标从窗体外移到窗体上,那么触发onmousemove的过程,将窗体恢复原样,同时timer的enabled变为true,timer启动;这样周而复始,从而达到要求;程序已经在电脑上运行过了,行!我们这儿好多的网吧,服务器上都没有软驱,所以我只有这样叙述了,真是麻烦!如果有问题,再联系;
    e-mail:  [email protected]
      

  2.   

    鼠标离开窗体时onmousemove对窗体无效