我的問題是,爲什麼Inno Setup的編譯器(Unicode或ANSI)和它所做的任何設置不減少顯示像其他Windows程序一個很好的最小化動畫創造出來的?安裝程序使用Inno Setup的編譯器不顯示最小化動畫
它顯示了一個非常基本的最小化動畫..........爲什麼呢?
我知道Borland Delphi
作爲Inno Setup Compiler的編譯器,但Borland Delphi
沒有這麼糟糕的最小化動畫...........它通常最小化正常,因爲Windows系統Windows最小化(例如資源管理器,計算機,控制面板).................
我還注意到Windows Installer創建者Nullsoft Scriptable Install System - NSIS
和使用它的設置也像我說的那樣最小化。
我該如何解決這個問題?
修訂問題
我還加了碼打那該多好縮放最小化/恢復動畫可以在創新安裝的WizardForm
許多Windows應用程序中可以看出,但是當我點擊WizardForm
的加入後最小化按鈕這個代碼給Inno Setup Compiler的源代碼,尼斯縮放動畫不會播放,它永遠不會被使用它最小化,它只能在添加此代碼後使用任務欄按鈕最小化。所以這意味着這段代碼無法工作或者其他任何錯誤...........爲什麼這不起作用?
代碼中,我加入到單位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
並呼籲TTrayZoom.ZoomFromTray
從if WMSysCommand..... = SCRESTORE
與設置HWND
參數WizardForm.Handle
。
但這些代碼永遠不會奏效,我甚至不知道他們是否得到所謂與否。 :(
什麼是動畫顯示的是有一個任務欄按鈕的窗口在這個WizardForm
?
否........避免在這裏使用'DrawAnimatedRects'!您可以輕鬆設置「Result:= 0」並調用ShowWindow來最小化,恢復或甚至最大化。 – GTAVLover