2016-07-16 82 views
0

我的問題是,爲什麼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..... = SCMINIMIZETTrayZoom.ZoomToTray並呼籲TTrayZoom.ZoomFromTrayif WMSysCommand..... = SCRESTORE與設置HWND參數WizardForm.Handle

但這些代碼永遠不會奏效,我甚至不知道他們是否得到所謂與否。 :(

什麼是動畫顯示的是有一個任務欄按鈕的窗口在這個WizardForm

+1

否........避免在這裏使用'DrawAnimatedRects'!您可以輕鬆設置「Result:= 0」並調用ShowWindow來最小化,恢復或甚至最大化。 – GTAVLover

回答

1

我說有兩個問題。

  1. 玩這個縮放動畫的問題該向導形式不具有任務欄按鈕。

    安裝程序的任務欄按鈕所屬的隱藏主窗口。

    ħ istorically安裝程序有全屏幕背景漸變藍色窗口。即使Inno Setup也支持這一點。

    enter image description here

    在這樣的背景下窗口在默認情況下不再啓用(WindowVisible directive默認爲No現代版本的Inno Setup的的),它仍然存在,擁有任務欄按鈕。

  2. Inno Setup的是利用古代版本的Delphi是有可能不與最小化功能發揮很好建成。

一般來說,我會說你應該提交一個功能請求/錯誤報告來解決這個問題。

+0

謝謝你的回覆,我向JR Software提交了一個功能請求/錯誤報告。我想知道我不能通過在一個更新的'Delphi'版本中編譯或者向Inno Setup的WizardForm Delphi源代碼添加一個'任務欄按鈕功能'來解決這個問題嗎?會有可能嗎? – Blueeyes789

+0

無法將「AnimateWindow」Windows API函數添加到WizardForm的源代碼中? – Blueeyes789

+0

我絕對可以通過在新版Delphi中編譯Inno Setup並在任務欄上顯示嚮導窗體來解決這個問題。如果主/背景窗口是嚮導窗體的父窗口,那麼您可能還必須擺脫主窗口。 –

相關問題