您的位置:首页 > 其它

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

2011-09-28 21:46 477 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: