inno setup 窗口拖动学习

本文介绍了如何在InnoSetup脚本中创建一个可拖动的安装界面。由于InnoSetup 5.5之后WizardForm不支持OnMouseDown,作者建议通过创建一个透明Label覆盖窗口并重载OnMouseDown事件来实现。详细步骤包括声明API,创建Label,并设置其属性以覆盖整个窗口或只覆盖标题区域,最后通过WM_SYSCOMMAND消息实现窗口移动功能。
摘要由CSDN通过智能技术生成

做安装包的时候,常常会实现安装界面可拖动的操作,因为Inno5.5之后,WizardForm不再支持OnMouseDown, 所以首先我们要先创建一个Label覆盖窗口,再将label设置为透明,由Label来重载OnMouseDown。

方法如下所示:

声明一个系统调用的api:

function ReleaseCapture() : longint; external 'ReleaseCapture@user32.dll stdcall';

inno set的脚本如下所示:

声明:

VAR

label_wizardform_title : TLabel;

//整个区域都可以拖动

label_wizardform_title := TLabel.Create(WizardForm);
  with label_wizardform_title do
  begin
    Parent := WizardForm;
    AutoSize := False;
    Left := 0;
    Top := 0;
    ClientWidth := WizardForm.ClientWidth;
    ClientHeight := WizardForm.ClientHeight;
    Caption := '';
    Transparent := TRUE;
    OnMouseDown := @WizardMouseDown;
  end;

//如果只是最上测的cation可以拖动 那么:

label_wizardform_title := TLabel.Create(WizardForm);
  WITH label_wizardform_title DO
  BEGIN
    Parent := WizardForm;
    AutoSize := FALSE;
    Left := 10;
    Top := 5;
    Width := WIZARDFORM_WIDTH_NORMAL;
    Height := 20;
    Font.Name := 'Microsoft YaHei';
    Font.Size := 9;
    Font.Color := clWhite;
    Caption := '{#MyAppName} V{#MyAppVersion} 安装';
    Transparent := TRUE;
    OnMouseDown := @WizardMouseDown;
  END;

在语句 : SendMessage(WizardForm.Handle, $112, $F012, 0); 中 $112是 WM_SYSCOMMAND的16进制,$F012是 SC_MOVE | HTCAPTION

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值