您的位置:首页 > 其它

最大化最小化自定义窗口的尺寸

2014-10-13 15:41 106 查看
unit uBaseForm;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs;

type

  TPoint = record

    x: Integer;

    y: Integer;

  end;

  TMinMaxInfo = record

    ptReserved: TPoint;

    ptMaxSize: TPoint;

    ptMaxPosition: TPoint;

    ptMinTrackSize: TPoint;

    ptMaxTrackSize: TPoint;

  end;

  TWMGetMinMaxInfo = record

    Msg: Cardinal;

    Unused: Integer;

    MinMaxInfo: PMinMaxInfo;

    Result: Longint;

  end;

  TBaseForm = class(TForm)

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private

    procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo ); message WM_GETMINMAXINFO;

  end;

var

  BaseForm: TBaseForm;

implementation

{$R *.dfm}

procedure TBaseForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  Action := caFree;            

end;

procedure TBaseForm.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);

begin

  with Message.MinMaxInfo^ do

  begin

    //ptMaxSize.X := Screen.Width; {Width when maximized}

    //ptMaxSize.Y := 200; {Height when maximized}

    ptMaxPosition.X := 0; {Left position when maximized}

    ptMaxPosition.Y := Application.MainForm.Height; {Top position when maximized}

    //ptMinTrackSize.X := 100; {Minimum width}

    //ptMinTrackSize.Y := 100; {Minimum height}

    ptMaxTrackSize.X := Screen.Width; {Maximum width}

    ptMaxTrackSize.Y := screen.Height - Application.MainForm.Height -25; {Maximum height}

  end;

  Message.Result := 0; {Tell windows you have changed minmaxinfo}

  inherited;

end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: