获取窗口矩形的四种方法: GetClientRect、ClientRect、GetWindowRect、BoundsRect

其中 GetClientRect、ClientRect 获取的是窗口的客户区矩形;

GetWindowRect、BoundsRect 是获取窗口矩形;

另外, 还有一个 Windows.GetClientRect(使用方法同 GetWindowRect, 它们都是 API 函数),
这里使用的 GetClientRect 是 Forms.GetClientRect.

本例效果图:

获取窗口矩形的四种方法: GetClientRect、ClientRect、GetWindowRect、BoundsRect

unit Unit1;



interface



uses

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

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure FormPaint(Sender: TObject);

    procedure FormResize(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);

begin

  Color := clWhite;

end;



procedure TForm1.FormPaint(Sender: TObject);

const

  str = 'L:%d; T:%d; R:%d; B:%d - ';

var

  R1,R2,R3,R4: TRect;

  buf: array[Byte] of Char;

  x,y,h: Integer;

begin

  R1 := GetClientRect;

  R2 := Self.ClientRect;

  GetWindowRect(Handle, R3);

  R4 := Self.BoundsRect;



  x := 10;

  y := 10;

  h := 10;



  Randomize;

  Canvas.Font.Color := Random($FFFFFF);

  wvsprintf(buf, str + 'GetClientRect', @R1);

  Canvas.TextOut(x, y, buf);

  y := y + h + Canvas.TextHeight(buf);



  wvsprintf(buf, str + 'Self.ClientRect', @R2);

  Canvas.TextOut(x, y, buf);

  y := y + h + Canvas.TextHeight(buf);



  Canvas.Font.Color := Random($FFFFFF);

  wvsprintf(buf, str + 'GetWindowRect', @R3);

  Canvas.TextOut(x, y, buf);

  y := y + h + Canvas.TextHeight(buf);



  wvsprintf(buf, str + 'Self.BoundsRect', @R4);

  Canvas.TextOut(x, y, buf);

end;



procedure TForm1.FormResize(Sender: TObject);

begin

  Repaint;

end;



end.


 
   

你可能感兴趣的:(window)