如何实现类似于oicq窗口自动隐藏功能的窗口?(200分)

  • 主题发起人 主题发起人 markboy
  • 开始时间 开始时间
我没有试过,给你点建议吧:<br>首先监测鼠标是否在窗口内,如果不在则隐藏;<br>现在的问题是:1,如何监测;2,如何隐藏;<br>1.需要截获windows消息:<br>...<br>procedure EMouseLeave(var Msg: TMessage);message CM_MOUSELEAVE;<br>...<br>procedure TForm1.EMouseLeave(var Msg: TMessage);<br>begin<br>&nbsp;//此处隐藏<br>end;<br>2.不懂,瞎猜:<br>将窗口移动到屏幕以外(肯定不是最小化);
 
借花献佛:<br><br>把程序作成两岸通形式的自动隐藏窗体其实很简单,只要截取CM_MOUSEENTER和<br>CM_MOUSELEAVE消息,判断鼠标是否已经离开窗体区域来显示和隐藏窗体就可以<br>了。在窗体声明的public段添加:<br>procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;<br>procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;<br><br>实现段:<br>procedure TFormZDDiabolo.CMMouseEnter(var msg:TMessage);<br>begin<br>&nbsp; inherited;<br>&nbsp; //添加你自己的控制语句;<br>end;<br><br>procedure TFormZDDiabolo.CMMouseLeave(var msg: TMessage);<br>begin<br>&nbsp; inherited;<br>&nbsp; //添加你自己的控制语句;<br>end;
 
隐藏和显示窗口,只需要设置窗口的大小就可以了.<br>不过好像有一个api跟这种方式有关,你可以自己看一下:<br>SHAppBarMessage
 
在一本《Delphi 4开发大全》里第二十四章有一个这样的例子,你可以看看,用的也<br>是SHAppBarMessage
 
要不要我把源代码发给你?
 
我也瞎猜一回:<br>有个例子是关于动画鼠标的,在99年的电脑报上,当鼠标移到窗口上时,鼠标变为动画,我想这个问题可能也是一样的。应该是个API吧!<br>对了,你可以试试在窗体的 &nbsp; &nbsp;ONMOUSEMOVE &nbsp; 事件中添加以下代码:<br><br>FORM1。WIDTH:=原来的值;//恢复原来大小<br><br>并让FORM2。HEIGHT---不变<br><br>并做一个BUTTON(CAPTION:=隐藏),让其ONCLICK事件执行:<br><br>FORM1。WIDTH:=1;//近似隐藏<br><br>当鼠标移到窗口上时,让窗口WIDTH或HEIGHT属性变为很小。。。瞎说。瞎说!!!<br>各位高手别笑我哦!
 
只能用 SHAppBarMessage
 
多人接受答案了。
 
后退
顶部