當視窗位置移動或尺寸更改或者呼叫 API: SetWindowPos 都會觸發
WM_WINPOSCHAGNED 訊息
以下程式片段示範了如何攔截 WM_WINPOSCHAGNED 訊息:
-----------------------------------------------------------------
type
TForm1 = class(TForm)
private
FNowLeft, FNowTop, FNowWidth, FNowHeight: Integer;
protected
procedure OnWinPosChanged(var Msg: TMessage); message
WM_WINDOWPOSCHANGED;
end;
implementation
procedure TForm1.OnWinPosChanged(var Msg: TMessage);
var
pWinPos: PWindowPos; // 參考 Delphi\Source\Rtl\Win\Window.pas
begin
inherited;
pWinPos := PWindowPos(Msg.LParam);
if WindowState = wsNormal then
begin
FNowLeft := pWinPos.x;
FNowTop := pWinPos.y;
FNowWidth := pWinPos.cx;
FNowHeight := pWinPos.cy;
end;
Msg.Result := 0;
end;
               (
geocities.com/huanlin_tsai)