原文 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。

; 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

Inno Setup GIF 显示插件 GIFCtrl (V2.1 版本)的更多相关文章

  1. Inno Setup 网页显示插件 webctrl (V2.1 版本)

    原文 http://restools.hanzify.org/article.asp?id=90 Inno Setup网页显示插件 webctrl能够显示所有 IE 中能够显示的东西.  引用内容 ; ...

  2. Inno Setup 精灵显示插件 InnoFairy (V2.0 版本)

    原文 http://restools.hanzify.org/article.asp?id=111 一个如影随形的小精灵会令到你的安装程序更加人性化. 就是这样一个功能的Inno Setup插件, 希 ...

  3. Inno Setup 网页显示插件 webctrl

    原文:Inno Setup 网页显示插件 webctrl ; -- Example.iss -- ; restools ; http://restools.hanzify.org ; 插件名:webc ...

  4. Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5

    原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题. ...

  5. Inno Setup 检测已安装的.NET Framework 版本

    翻译自:http://kynosarges.org/DotNetVersion.html 由 Jordan Russell 写的 Inno Setup 是一个伟大的安装脚本程序,但缺乏一个内置的函数来 ...

  6. Inno setup定制安装界面

    Innosetup功能很强大,可以通过它提供的Wizard接口来定制界面,但我对PASCAL语言不熟悉,也不清楚通过那种接口可改动的范围有多大,最后做出来的效果是否好,所以选择了通过一个DLL来实现我 ...

  7. 在Unicode版Inno Setup中使用ISSkin

    ISSkin是Code jock 公司出品的Inno Setup 皮肤插件,用于为Inno制作的安装程序提供皮肤功能. 自Delphi发布2009之后,Inno Setup 开始出现支持Unicode ...

  8. [!!!!!]Inno Setup教程-常见问题解答

    [转]Inno Setup教程-常见问题解答 功能 * 翻译 Inno Setup 文字  * 它支持 MBCS (多字节字符集) 吗?  * 将来会支持 Windows Installer 吗?   ...

  9. Inno Setup脚本语法大全

    Inno Setup脚本语法大全 ResourceShare Bruce 11个月前 (10-28) 6136浏览 0评论   Inno Setup 是什么?Inno Setup 是一个免费的 Win ...

随机推荐

  1. sql 添加约束

    在表中添加约束,基本常用的有两种类型,一个是创建表时同时添加约束,另一个是创建好表通过修改表添加约束,在这里是创建表时同时添加约束,但是有两种不同的用写法. 在这里列举出一些创建约束的形式,共参考(均 ...

  2. BZOJ 1086 王室联邦

    http://www.lydsy.com/JudgeOnline/problem.php?id=1086 思路:贪心,每次当储存的儿子大于等于B时,分出一个块,这样每次每个块至多为2B,这样剩下的没有 ...

  3. UVA_Digit Puzzle UVA 12107

    If you hide some digits in an integer equation, you create a digit puzzle. The figure below shows tw ...

  4. OpenWrt for vmware 从openwrt.org下载10.03.1 或是自己下载最新的源码进行编译生成x86 vmdk格式

    1,直接从OpenWrt.org官网下载 http://downloads.openwrt.org/backfire/10.03.1/x86_generic/ 更新OpenWrt在线软件源 opkg ...

  5. poj 2446 (二分匹配)

    题意:除了所给的一些点外,问能不能用1*2的矩形覆盖所有的点,矩形间不能重叠. 思路:简单二分匹配,,,,,,, #include<stdio.h> #include<string. ...

  6. 如何把UIView转成UIImage,解决模糊失真问题

    最近工作中,遇到一个需求,需要把一个UIView对象转成UIImage对象显示.经过网络搜索,找到如下答案: ? 1 2 3 4 5 6 7 8 -(UIImage*)convertViewToIma ...

  7. 【贪心】【uva11520】 Fill the Square

    填充正方形(Fill the Square, UVa 11520) 在一个n×n网格中填了一些大写字母,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻格子(即有公共边的格子)中的字母不同.如 ...

  8. php常用的操作

    一.  php配置 1.禁止一些函数disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passt ...

  9. Android默认启动程序问题

    参考地址:http://www.cnblogs.com/Lewis/p/3316946.html 怎么让我们自己开发的Android程序设为默认启动呢?其实很简单,只要在AndroidManifest ...

  10. xmanager 在 Windows 下远程桌面连接 麒麟

    编辑/etc/gdm/custom.conf,添加如下内容: [daemon] RemoteGreeter=/usr/libexec/gdmgreeter  注:“远程登录界面与本地登录界面相同”功能 ...