【发布时间】:2016-11-19 13:12:30
【问题描述】:
我的问题是为什么 Inno Setup Compiler(Unicode 或 ANSI)以及由它进行的任何设置都不会像在其他 Windows 程序中那样最小化显示一个不错的最小化动画?
它显示了一个非常基本的最小化动画............为什么会这样?
我知道Borland Delphi是Inno Setup Compiler的Compiler,但是Borland Delphi没有那么糟糕的Minimize Animation............它像Windows System Windows最小化一样正常最小化(比如Explorer 、计算机、控制面板)......
我还注意到 Windows Installer Creater Nullsoft Scriptable Install System - NSIS 和使用它进行的设置也像我说的那样最小化。
我该如何解决这个问题?
更新问题
我还添加了一个代码来播放在 Inno Setup 的 WizardForm 上的许多 Windows 应用程序中可以看到的漂亮的缩放最小化/恢复动画,但是当我在将此代码添加到 Inno Setup 后单击WizardForm 的最小化按钮时编译器的源代码,Nice Zooming 动画无法播放,并且永远无法使用它最小化,只有添加此代码后才能使用任务栏按钮将其最小化。所以这意味着这段代码不起作用或其他任何错误............为什么这不起作用???
我添加到单元WizardForm的代码:
interface
uses
Windows;
type
TTrayZoom = class(TObject)
private
class function GetTrayRect: TRect;
class procedure DoZoom(const Wnd: HWND; const Src, Dest: TRect);
public
class procedure ZoomToTray(const Wnd: HWND);
class procedure ZoomFromTray(const Wnd: HWND);
end;
implementation
class procedure TTrayZoom.DoZoom(const Wnd: HWND; const Src, Dest: TRect);
begin
DrawAnimatedRects(Wnd, IDANI_CAPTION, Src, Dest);
end;
class function TTrayZoom.GetTrayRect: TRect;
var
TaskbarWnd, TrayWnd: HWND;
begin
TaskbarWnd := FindWindow('Shell_TrayWnd', nil);
TrayWnd := FindWindowEx(TaskbarWnd, 0, 'TrayNotifyWnd', nil);
GetWindowRect(TrayWnd, Result);
end;
class procedure TTrayZoom.ZoomFromTray(const Wnd: HWND);
var
WndRect: TRect;
begin
GetWindowRect(Wnd, WndRect);
DoZoom(Wnd, GetTrayRect, WndRect);
end;
class procedure TTrayZoom.ZoomToTray(const Wnd: HWND);
var
WndRect: TRect;
begin
GetWindowRect(Wnd, WndRect);
DoZoom(Wnd, WndRect, GetTrayRect);
end;
我从if WMSysCommand..... = SCMINIMIZE 调用TTrayZoom.ZoomToTray 并从if WMSysCommand..... = SCRESTORE 调用TTrayZoom.ZoomFromTray,并将HWND 参数设置为WizardForm.Handle。
但是这些代码永远不会起作用,我什至不知道它们是否被调用。 :(
在WizardForm 中播放这个缩放动画有什么问题?
【问题讨论】:
-
No........避免在这里使用
DrawAnimatedRects!如果需要,您可以轻松设置Result := 0并调用ShowWindow来最小化、恢复甚至最大化。
标签: inno-setup restore minimize