盒子资源分类
无闪烁 MDI 子窗口
关键字:MDI 子窗口 最大化 无闪烁
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003
下载所需:0 火柴
深浅度:初级
完成时间:2006/4/26
发布者:vvyang
发布时间:2006/4/27
编辑器:DELPHI7
语 种:简体中文
分 类:窗体
下载浏览:3486/17869
1、很多朋友都问过怎样避免 MDI 子窗口在最大化(或最小化)过程中出现闪烁,就像 Excel 一样,子窗口不产生动画效果,不过一直都没有很好的解决办法。 2、如果您喜欢用 LockWindowUpdate 之类的就别往下看了。 3、原理极其简单,就是用 SystemParametersInfo 函数实现开、关系统的动画效果。 4、我把这种 MDI 子窗口写成了一个类,大家用的时候只要把 class(TForm) 中的 “TForm” 换成 “TQuietMDIChildForm”就行了,其他都跟平常一样。非 MDI 子窗口也可以这样继承,不过 Delphi 中万恶的 Application 会在里面捣乱。 5、我的水平很洼,代码也可能有缺陷,大家给提点意见吧。
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们 !
相关文章
相关评论
共有评论14条
当前显示最后6条评论
vvyang
2006/7/29 12:08:21
To: 看来“如果您喜欢用 LockWindowUpdate 之类的就别往下看了”这句话没白写。 看清楚,“怎样避免 MDI 子窗口在最大化(或最小化)过程中出现闪烁”,您写的是虾米东西?
legend888888
2008/5/29 15:01:16
good
hellgod
2008/6/18 10:59:05
还是闪的。 var WM_SETREDRAW : DWORD; f : TForm2; begin WM_SETREDRAW := $000B; SendMessage(ClientHandle,WM_SETREDRAW,0,0); f:= TForm2.Create(Application); f.Show; SendMessage(ClientHandle,WM_SETREDRAW,1,0); ReDrawWindow(ClientHandle,nil,0,RDW_INVALIDATE or RDW_ALLCHILDREN); end; 这个方法更好些,基本上不闪了。(网上整理),需要引用windows.
hellgod
2008/6/18 13:24:15
子窗体一定要设置为fsMDIChild属性。
gddlcb
2009/5/24 18:46:45
还有一个问题啊,留下你的QQ或邮箱我发给你。
tsingfeng_bhcss
2009/8/6 18:15:35
如果把子窗体的WindowState设置成wsMaximized 还是闪烁的
我要发表评论
查看全部评论