Inno Setup GIF 显示插件 GIFCtrl (V2.1 版本)

简介: 原文 http://restools.hanzify.org/article.asp?id=79  引用来自 test.iss ; -- test.iss --; restools; http://restools.hanzify.org; gifctrl.dll 为一个用于 Inno Setup 的 13 KB 的 gif 显示插件,同样可以显示 BMP 和 JPEG。

原文 http://restools.hanzify.org/article.asp?id=79

引用来自  test.iss  引用来自 test.iss
; -- test.iss --
; restools
; http://restools.hanzify.org
; gifctrl.dll 为一个用于 Inno Setup 的 13 KB 的 gif 显示插件,同样可以显示 BMP 和 JPEG。

; 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();
begin
  
FreeAllGifWnd();
end;

procedure LblOnClick(Sender: TObject);
var
  
ErrorCode: Integer;
begin
  
ShellExec('open', 'http://restools.hanzify.org', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure InitializeWizard();
var
  
GifFileName: String;
  Lbl: TNewStaticText;
begin
  
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;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if 
CurPageID = wpInstalling then
  begin
    
MsgBox('暂停一下,看看效果。', mbInformation, MB_OK);
  end;
end;



点击下面连接下载例子。
http://restools.hanzify.org/inno/gifctrl/inno_gifctrl_v2.1.zip

目录
相关文章
|
13天前
|
Linux Go iOS开发
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
本文介绍了如何在 VSCode 中禁用点击 Go 包名时自动打开浏览器跳转到 pkg.go.dev 的功能。通过将 gopls 的 `ui.navigation.importShortcut` 设置为 "Definition",可以实现仅跳转到定义处而不打开链接。具体操作步骤包括:打开设置、搜索 gopls、编辑 settings.json 文件并保存更改,最后重启 VSCode 使设置生效。
38 7
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
|
3月前
inno setup打包软件学习
如何使用Inno Setup打包软件,包括打包结果的展示、示例打包脚本的提供、常见错误的解决方法,以及参考资料的链接。文中详细解释了解决“另一个程序正在使用此文件”和“桌面图标无法修改”等问题的方法,以及如何正确设置打包脚本中的文件路径和图标。
121 0
inno setup打包软件学习
|
4月前
|
资源调度 前端开发 JavaScript
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
|
Windows
Inno Setup 插件 CallbackCtrl V1.1 (回调函数插件)
原文 http://restools.hanzify.org/article.asp?id=101 VC 重现 InnoCallback 的功能。Version 1.1修正在某些 Windows 平台(例如: Windows XP SP3)出现不能正常运行的问题。
1513 0
|
JavaScript
还在多次copy ElTable组件吗?试试dyingtable插件吧
本文主要针对table表格item多次渲染进行了一个二次封装,节省代码量。将table表头和表体数据独立出来,通过js数据去控制其表头展示文字。
174 0
|
JavaScript
制作部署安装包:Inno Setup
原文:制作部署安装包:Inno Setup 前一篇尝试Office 2003 VSTO的开发、部署有提到用VS开发一个简单的VSTO程序。打包C/S程序,我首先想到的是VS里自带的Setup Project。
1344 0
Inno Setup 网页显示插件 webctrl
原文: Inno Setup 网页显示插件 webctrl ; -- Example.iss -- ; restools ; http://restools.hanzify.org ; 插件名:webctrl.dll ; 插件功能:网络连接检测,创建网页页面。
947 0