引用來自 test.iss
; -- test.iss --
; restools
; V2.1 可以同時顯示 64 個 GIF 圖檔。解決插件加載後解除安裝時的延遲問題.
[Setup]
AppName=gifctrl
AppVerName=gifctrl Ver 2.1
DefaultDirName={pf}\gifctrl
DefaultGroupName=gifctrl
OutputDir=userdocs:Inno Setup Examples Output
SolidCompression=yes
[Files]
Source: "gifctrl.dll"; Flags: dontcopy solidbreak
Source: nsisinstall.gif; Flags: dontcopy solidbreak
Source: 0023.gif; Flags: dontcopy solidbreak
Source: "MyProg.exe"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
[Icons]
Name: "{group}\gifctrl"; Filename: "{app}\MyProg.exe"
[code]
const
HALIGN_CENTER = 0; //水準居中
HALIGN_LEFT = 1; //水準靠左
HALIGN_RIGHT = 2; //水準靠右
VALIGN_CENTER = 0; //垂直居中
VALIGN_TOP = 1; //垂直靠上
VALIGN_BOTTOM = 2; //垂直靠下
FIT_NONE = 0; //不适應視窗
FIT_WIDTH = 1; //适應視窗寬度
FIT_HEIGHT = 2; //适應視窗高度
FIT_BOTH = 3; //适應視窗寬度和高度
CLR_INVALID = $FFFFFFFF; //自動取容器左上角的顔色作為底色,如果取色失敗,用按鈕顔色代替。
// 建立 Gif 視窗
function NewGifbWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND; external'newgifwnd@files:gifctrl.dll stdcall';
// 釋放 Gif 視窗
function FreeGifWnd(hWndGif: HWND): Boolean; external 'freegifwnd@files:gifctrl.dll stdcall';
// 釋放所有 Gif 視窗
function FreeAllGifWnd(): Boolean; external 'freeallgifwnd@files:gifctrl.dll stdcall';
// 設定 Gif 視窗的父視窗
function GifWndSetParent(hWndGif: HWND; hWndParent: HWND): Boolean; external'gifwndsetparent@files:gifctrl.dll stdcall';
// 設定 Gif 視窗的位置大小
function GifWndSetBounds(hWndGif: HWND; X, Y, nWidth, nHeight: Integer): Boolean; external'gifwndsetbounds@files:gifctrl.dll stdcall';
// 載入圖檔,并設定圖檔顯示位置
function GifWndLoadFromFile(hWndGif: HWND; HAlign, VAlign: Integer; BGColor: DWord; Fit: integer; GifFileName: PChar): Boolean; external 'gifwndloadfromfile@files:gifctrl.dll stdcall';
// 第1 次載入需要指定圖檔檔案“GifFileName”,然後在需要重新載入另外圖檔的時候重新指定另外的圖檔檔案,重新調整 Align 位置時也需要調用此函數,
// 但是如果隻是為了調整 Align 而不想重新載入一次 GifFileName 檔案,隻需要把 GifFileName 設定為空字元串就可以達到隻調整位置,不重載檔案。
var
GifPanel: TPanel;
GIFHWND1, GIFHWND2: HWND;
function InitializeSetup(): Boolean;
begin
GIFHWND1 := 0;
GIFHWND2 := 0;
Result := True;
end;
procedure DeinitializeSetup();
FreeAllGifWnd();
procedure LblOnClick(Sender: TObject);
ErrorCode: Integer;
procedure InitializeWizard();
GifFileName: String;
Lbl: TNewStaticText;
ExtractTemporaryFile('nsisinstall.gif');
ExtractTemporaryFile('0023.gif');
GIFHWND1 := NewGifbWnd(WizardForm.InstallingPage.Handle, 0, WizardForm.PROGRESSGAUGE.Top + WizardForm.PROGRESSGAUGE.Height + SCaleY(5),
WizardForm.InstallingPage.Width, WizardForm.InstallingPage.Height - (WizardForm.PROGRESSGAUGE.Top
+ WizardForm.PROGRESSGAUGE.Height + SCaleY(5)));
GifWndLoadFromFile(GIFHWND1, HALIGN_CENTER, VALIGN_BOTTOM, CLR_INVALID, FIT_WIDTH, ExpandConstant('{tmp}\nsisinstall.gif'));
// 建立一個網站 Logo 連接配接
GIFHWND2 := NewGifbWnd(WizardForm.Handle, ScaleX(30), WizardForm.Bevel.Top + ScaleY(8), 88, 31);
GifWndLoadFromFile(GIFHWND2, HALIGN_CENTER, VALIGN_CENTER, CLR_INVALID, FIT_NONE, ExpandConstant('{tmp}\0023.gif'));
Lbl := TNewStaticText.Create(WizardForm);
Lbl.Parent := WizardForm;
Lbl.AutoSize := False;
Lbl.SetBounds(ScaleX(30), WizardForm.Bevel.Top + ScaleY(8), 88, 31);
Lbl.OnClick := @LblOnClick;
Lbl.Cursor := crHand;
procedure CurPageChanged(CurPageID: Integer);
if CurPageID = wpInstalling then
begin
MsgBox('暫停一下,看看效果。', mbInformation, MB_OK);
end;
點選下面連接配接下載下傳例子。
<a href="http://restools.hanzify.org/inno/gifctrl/inno_gifctrl_v2.1.zip" target="_blank">http://restools.hanzify.org/inno/gifctrl/inno_gifctrl_v2.1.zip</a>