nein, ein Hook ist völlig unnötig. Diesen würdest du nur benötigen wenn du die Message einer anderen Anwendung bearbeiten willst
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 =
class(TForm)
private
procedure FWM_Sizing(
var AMsg: TMessage);
message wm_sizing;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FWM_Sizing(
var AMsg: TMessage);
begin
//Message abändern
inherited;
end;
end.
Hier mal eine Möglichkeit wie die Messageroutine aussehen kann.
[Edit]
Delphi-Quellcode:
procedure TForm1.FWM_Sizing(var AMsg: TMessage);
var lRect : PRect;
lRatio : TPoint;
lNewHeight,
lNewWidth : Integer;
begin
lRatio := Point(4, 3);
lRect := PRect(AMsg.LParam);
lNewHeight := lRect.Bottom - lRect.Top + 1;
lNewWidth := lRect.Right - lRect.Left + 1;
case AMsg.WParam of
WMSZ_BOTTOM, WMSZ_TOP: lRect.Right := lRect.Left + Round(lNewHeight * lRatio.X / lRatio.Y);
WMSZ_LEFT, WMSZ_RIGHT: lRect.Bottom := lRect.Top + Round(lNewWidth * lRatio.Y / lRatio.X);
//übrig bleibt noch was passieren soll wenn jemand direkt eine Ecke anpackt
end;
inherited;
end;
[/Edit]