3

BorderStyleカスタムの外観のインストーラーを作成し、 を に設定してタイトルバーを無効にしたいと考えていますbsNone

これで、ウィンドウを移動できなくなりました。私は周りを見回して、Delphi の解決策を見つけました:
http://www.chami.com/tips/delphi/010397D.html

これは Inno Setup で実現できますか?

私はすでにWM_NCHITTESTMSDNで調べましたが、これを機能させることができるかどうか、またその方法を理解できません。

編集:高度なコンパイラー高度なコンパイラーを使用して周りを見回してコンパイルした後、私はこれを思いつきましたが、機能しません。コンパイルはできますが、ウィンドウ内をクリックするとドラッグできません。

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

2 に答える 2

4

いいえ。メッセージを処理したり、WndProcfor コントロールを変更したりする方法はありません。のように文書化されていないドラッグ移動を実装する機会はほとんどありthis postませんでしたが、残念ながら InnoSetup にはスクリプト用に公開されたマウス ダウン イベントがないため、外部ライブラリがないと運が悪くなります。


あなたが言及したライブラリとコードを使用する; 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;
于 2012-12-09T21:51:28.727 に答える