Make Inno Setup WizardForm moveable if titlebar is disabled

血红的双手。 提交于 2019-12-18 04:23:17

问题


I want to make an installer with a custom look and disabled the titlebar by setting the BorderStyle to bsNone.

Now I cannot move the window anymore. I have looked around and found a solution for Delphi:
http://www.chami.com/tips/delphi/010397D.html

Can this be accomplished in Inno Setup?

I have already looked up the WM_NCHITTEST thing on MSDN but I cannot figure out if and how I can make this work.

Edit: After looking around and compiling it using the advanced compiler advanced compiler I came up with this, but it doesn't work. It compiles but when I click inside the window, I cannot drag it.

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;

回答1:


No. There's no way to handle messages or alter the WndProc for controls. There was a little chance to implement the undocumented drag move like in this post, but unfortunately InnoSetup doesn't have mouse down events published for scripting, so you're out of luck without some external libary.


Using the library and code you've mentioned; you are missing the ReleaseCapture function call. Use this script code instead (and don't forget, that the only bare part of the wizard form is on bottom left):

[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;



回答2:


I am updating this question with latest knowledge for future reference.

This feature (dragging borderless installer window) is now working in Inno Setup, however it is part of Graphical Installer which is Inno Setup extension.

Check the website http://www.graphical-installer.com for details.

Note: Graphical Installer is commercial extension for Inno Setup and NSIS which offer new features and enables creating skinned installers. I am developer of this extension.



来源:https://stackoverflow.com/questions/13792168/make-inno-setup-wizardform-moveable-if-titlebar-is-disabled

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!