2009. március 1., vasárnap

How to intercept the maximize command


Problem/Question/Abstract:

How to intercept the maximize command

Answer:

If you want to restrict your window's maximum size (or minimum size, for that matter), you may try to intercept WM_SYSCOMMAND and check for the value of wParam.

More elegant is to intercept WM_GETMINMAXINFO, as the following example shows:


type
  TMyForm = class(TForm)
    procedure _WM_GETMINMAXINFO(var mmInfo: TWMGETMINMAXINFO); message
      wm_GetMinMaxInfo;
  end;

  //..

procedure TMyForm._WM_GETMINMAXINFO(var mmInfo: TWMGETMINMAXINFO);
begin
  with mmInfo.minmaxinfo^ do
  begin
    // allow at most half of the screen, and position it in the middle
    ptmaxposition.x := Screen.Width div 4;
    ptmaxposition.y := Screen.Height div 4;

    ptmaxsize.x := Screen.Width div 2;
    ptmaxsize.y := Screen.Height div 2;
  end;
end;

end.

Nincsenek megjegyzések:

Megjegyzés küldése