打印本文 打印本文 关闭窗口 关闭窗口
QQ窗体自动隐藏效果探究
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3168  更新时间:2009/4/23 18:26:52  文章录入:mintao  责任编辑:mintao
而发生相应的变化,因此OnTimer事件中的处理也要相应的改动,主要是显示窗体的时候要注意对窗体Top和Height属性的设置必须跟随与系统工具栏的位置和高度相协调,代码如下:

……

    if akLeft in FAnchors then

    begin

      Left := -Width + cOffset;

      SetBarHeight;

      Top := Cur_Top;

      Height := Cur_Bottom;

    end;

 

    if akRight in FAnchors then

    begin

      Left := Screen.Width - cOffset;

      SetBarHeight;

      Top := Cur_Top;

      Height := Cur_Bottom;

    end;

……

    最后,为了保证窗体在屏幕两边隐藏后高度保持不变,我们再添加一个WMSizing过程对WM_Sizing消息进行拦截处理。WMSizing过程的代码如下:

procedure TForm1.WMSizing(var Msg: TMessage);

begin

  inherited;

  if (akRight in FAnchors) then

  begin

    with PRect(Msg.LParam)^  do

    begin

      Left := Screen.Width - Width;

      Top := Cur_Top;

      Right := Screen.Width;

      Bottom := Cur_Bottom

    end;

  end else if (akLeft in FAnchors) then

  begin

    with PRect(Msg.LParam)^ do

    begin

      Left := 0;

      Top := Cur_Top;

      Right := Width;

      Bottom := Cur_Bottom;

    end;

  end;

end;

WM_Sizing消息的语法结构与WM_MOVING消息相似,也包含了一个对矩形的指针。通过该指针我们可以对矩形的Top、Left、Right和Bottom参数进行设置,从而保证矩形高度不受用户操作影响。

 

至此,一个窗体自动隐藏的程序就基本完成了,其实际效果已经和QQ相当接近了。当然,从实际运行效果看还存在着一些小瑕疵,并且代码中并没有对窗体在隐藏后的宽度设置上进行处理,或者大家可以考虑继续进行完善此程序。

 

 

上一页  [1] [2] [3] [4] 

打印本文 打印本文 关闭窗口 关闭窗口