做安装包的时候,常常会实现安装界面可拖动的操作,因为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