2016-07-16 18 views
0

Моя проблема заключается в том, почему компилятор Inno Setup (Unicode или ANSI) и любые сделанные им настройки не сводят к минимуму отображение приятной минимизирующей анимации, как в других программах Windows?Программы установки, созданные с помощью программы Inno Setup Компилятор не отображает Минимизировать анимацию

Он отображает очень базовую Минимизирующую анимацию .......... Почему?

Я знаю Borland Delphi как компилятор компилятора Inno Setup, но Borland Delphi не имеет такого плохого Свернуть анимацию ........... Минимизирует его как обычно, как Windows System Windows (например, Explorer, Computer, Панель управления) ...

Я также заметил, что создатель Windows Installer Creater Nullsoft Scriptable Install System - NSIS и созданные с его помощью установки также сведены к минимуму, как я уже сказал.

Как я могу решить эту проблему?

ОБНОВЛЕНО ВОПРОС

Я также добавил код, чтобы играть, что приятно Zooming Минимизировать/Восстановить анимацию можно увидеть во многих приложениях Windows на Inno Setup-х WizardForm, но когда я нажимаю WizardForm «s Кнопка минимизации после добавления этот код для исходного кода компилятора Inno Setup, анимация 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; 

И я назвал TTrayZoom.ZoomToTray из if WMSysCommand..... = SCMINIMIZE и называется TTrayZoom.ZoomFromTray из if WMSysCommand..... = SCRESTORE с заходящего HWND параметра WizardForm.Handle.

Но эти коды никогда не работают, я даже не знаю, вызваны ли они или нет. :(

В чем проблема, играя в эту Zooming анимации в этом WizardForm?

+1

Нет ........ Избегайте использования 'DrawAnimatedRects' здесь! Вы можете легко установить 'Result: = 0' и вызвать' ShowWindow' для минимизации, восстановления или даже максимизации, если хотите. – GTAVLover

ответ

1

Я бы сказал, что есть два вопроса.

  1. анимация показывается для окон, которые имеют кнопку на панели задач . форма мастера не имеет кнопок на панель задач.

    кнопка панели задач монтажника принадлежит к скрытому главному окну.

    H Исторически инсталляторы имели полноэкранные фоновые градиентные синие окна. Даже Inno Setup поддержал это.

    enter image description here

    Пока что фоновое окно больше не включена по умолчанию (по умолчанию WindowVisible directiveNo в современных версиях установки Inno), она до сих пор существует и имеет кнопку на панели задач.

  2. Inno Setup построен с использованием древней версии Delphi, которая, по-видимому, не играет хорошо с функцией минимизации.

Как правило, я бы сказал, что вы должны подать отчет о функции/ошибке, чтобы получить это исправление.

+0

Благодарим вас за ответ, я подал сообщение об ошибке функции/сообщение об ошибке в «JR Software». Мне нравится знать, не могу ли я решить это, скомпилировав это в новой версии Delphi или добавив функцию кнопки панели задач в исходный код WizardForm Delphi в Inno Setup? Будет ли это возможно? – Blueeyes789

+0

Не могу ли добавить функцию API Windows AnimateWindow в исходный код WizardForm? – Blueeyes789

+0

Я определенно могу быть разрешен путем компиляции Inno Setup в новой версии Delphi и отображения формы мастера на панели задач. Если основное/фоновое окно является родителем формы мастера, вам, вероятно, также придется избавиться от главного окна. –

 Смежные вопросы

  • Нет связанных вопросов^_^