让Inno Setup的WizardForm移动如果标题栏被禁用(Make Inno Setup W

2019-07-04 19:58发布

我想和一个自定义外观和残疾人的标题栏通过设置一个安装BorderStylebsNone

现在我不能再移动窗口。 我环顾四周,发现德尔福的解决方案:
http://www.chami.com/tips/delphi/010397D.html

可这在Inno Setup的实现呢?

我已经看过了WM_NCHITTEST MSDN上的东西,但我想不出我是否以及如何使这项工作。

编辑:环顾四周,使用编译它经过先进的编译器先进的编译器,我想出了这一点,但它不工作。 它编译,但是当我点击窗口内,我不能拖。

procedure Dragg(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  SendMessage(WizardForm.Handle, $F112, $F012, 0);
end;

procedure InitializeWizard();
begin
  WizardForm.OnMouseDown := @Dragg;
end;

Answer 1:

号有没有办法来处理消息或改变WndProc进行控制。 有实现像无证拖拽移动一点机会this post ,但不幸的是InnoSetup没有鼠标按下公布脚本事件,所以你的运气了没有一些外部libary。


使用你所提到的库和代码; 你缺少的ReleaseCapture函数调用。 使用这个脚本代码,而不是(不要忘记,该向导形式的唯一裸露部分是左下图):

[Code]
function ReleaseCapture: BOOL;
  external 'ReleaseCapture@user32 stdcall';

const
  SC_DRAGMOVE = $F012;
  WM_SYSCOMMAND = $0112;

procedure OnMouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  WizardForm.Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;

procedure InitializeWizard;
begin
  WizardForm.OnMouseDown := @OnMouseDown;
end;


Answer 2:

我更新以供将来参考最新的知识这个问题。

此功能(拖动无边框安装程序窗口)现在是Inno Setup的工作,但它是图形安装程序的一部分,这是Inno Setup的扩展。

检查网站http://www.graphical-installer.com了解详情。

注:图形安装程序是Inno Setup的和NSIS它提供的新功能的商业推广,使皮肤制作安装。 我是这个扩展的开发者。



文章来源: Make Inno Setup WizardForm moveable if titlebar is disabled