经验共享:怎样消除 MDI 子窗口最大化过程中的动画效果(100分)

  • 主题发起人 主题发起人 vvyang
  • 开始时间 开始时间
V

vvyang

Unregistered / Unconfirmed
GUEST, unregistred user!
1、很多朋友都问过怎样避免 MDI 子窗口在最大化(或最小化)过程中出现闪烁,就像 Excel 一样,子窗口不产生动画效果,不过一直都没有很好的解决办法。<br>2、如果您喜欢用 LockWindowUpdate 之类的就别往下看了。<br>3、原理极其简单,就是用 SystemParametersInfo 函数实现开、关系统的动画效果。<br>4、我把这种 MDI 子窗口写成了一个类,大家用的时候只要把 class(TForm) 中的 “TForm” 换成 我的类就行了,其他都跟平常一样。非 MDI 子窗口也可以这样继承,不过 Delphi 中万恶的 Application 会在里面捣乱。<br>5、代码不在这里贴了,很少,大家都能看懂。感兴趣的可以到 Delphi 盒子下载:<br>http://www.delphibox.com/<br>6、不知道别人写过类似的没有,有的话别笑话我啊。
 
刚传上去,斑竹很快就能发布。
 
加上把这个函数也重载了,窗体切换的时候就不会是先看到一个框了。<br>procedure TQuietMDIChildForm.CreateWindowHandle(<br> &nbsp;const Params: TCreateParams);<br>var<br> &nbsp;ANewParams: TCreateParams;<br>begin<br> &nbsp;ANewParams.Caption := Params.Caption;<br> &nbsp;ANewParams.Style := Params.Style;<br> &nbsp;ANewParams.ExStyle := Params.ExStyle;<br> &nbsp;ANewParams.X := 0;<br> &nbsp;ANewParams.Y := 0;<br> &nbsp;ANewParams.Width := Screen.Width;<br> &nbsp;ANewParams.Height := Screen.Height;<br> &nbsp;ANewParams.WndParent := Params.WndParent;<br> &nbsp;ANewParams.Param := Params.Param;<br> &nbsp;ANewParams.WindowClass := Params.WindowClass;<br> &nbsp;ANewParams.WinClassName := Params.WinClassName;<br> &nbsp;inherited CreateWindowHandle(ANewParams);<br>end;
 
谢谢楼上,我在应用中很少用到切换。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部