我想和一个自定义外观和残疾人的标题栏通过设置一个安装BorderStyle
来bsNone
。
现在我不能再移动窗口。 我环顾四周,发现德尔福的解决方案:
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;
号有没有办法来处理消息或改变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;
我更新以供将来参考最新的知识这个问题。
此功能(拖动无边框安装程序窗口)现在是Inno Setup的工作,但它是图形安装程序的一部分,这是Inno Setup的扩展。
检查网站http://www.graphical-installer.com了解详情。
注:图形安装程序是Inno Setup的和NSIS它提供的新功能的商业推广,使皮肤制作安装。 我是这个扩展的开发者。