有 N 个人问过这个问题了,我想解决它的根本办法是先关闭系统的动画效果,处理完后再开启,至于 LockWindowsUpdate,是以讹传讹、没有效果。
//得到当前系统是否设定为动画显示
function GetAnimation: Boolean;
var
Info: tagANIMATIONINFO;
begin
Info.cbSize := SizeOf(tagANIMATIONINFO);
if SystemParametersInfo(SPI_GETANIMATION, SizeOf(Info), @Info, 0) then
Result := Info.iMinAnimate <> 0
else
Result := False;
end;
//设定当前系统的动画显示效果
procedure SetAnimation(const Value: Boolean);
var
Info: tagANIMATIONINFO;
begin
Info.cbSize := SizeOf(tagANIMATIONINFO);
LongBool(Info.iMinAnimate) := Value;
SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;
var
Animation: Boolean;
begin
Animation := GetAnimation;
if Animation then
SetAnimation(False);
try
你的调用子窗体的过程...
finally
if Animation then
SetAnimation(True);
end;
end;