文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 233
阅读 8
收藏 0
其中 GetClientRect、ClientRect 获取的是窗口的客户区矩形;

GetWindowRect、BoundsRect 是获取窗口矩形;

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

本例效果图:


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.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/05/29/1209857.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
VC对话框全屏显示及相应控件位置改变(转)

一、简单对话框全屏显示方法在OnInitDialog()中任意加入: 1、ModifyStyle(WSCAPTION,0,0); //如果不想去掉标题栏,去掉该句。 SendMessage(WMSYSCOMMAND,SCMAXIMIZE,0); 2、ShowWindow(SWSH...

长平狐
2012/11/01
82
0
GetWindowRect & GetClientRect

GetWindowRect 函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。 GetClientRect 该函数获取窗口客户区的坐标。客户区坐标指定客户区的左上角和...

ryany
2010/11/05
0
0
GetDC,GetDCEX,GetWindowDC

GetDC():获得指定窗口的客户区设备描述表句柄。 GetDCEX():获得指定窗口的客户区设备描述表句柄,是GetDC的扩展,对如何剪裁客户区域或是否剪裁客户区域提供给程序更多的控制。 GetWindowDC(...

yintao
2014/11/17
0
0
窗口设置最顶端,全屏

使窗口设置为最大化,最顶层 int cxScreen,cyScreen; cxScreen=GetSystemMetrics(SM_CXSCREEN);//获得屏幕的宽度 cyScreen=GetSystemMetrics(SM_CYSCREEN);//获得屏幕的高度 SetWindowPos(&......

长平狐
2012/10/08
397
0
【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7405479 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 上一节我们讲解了键盘...

长平狐
2012/11/12
110
0

没有更多内容

加载失败,请刷新页面

加载更多

java8之stream流的基本操作

一、stream流简介 Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 Stream的优点:声明性,可复合,可并行。这三个特性使得stream操作更简洁,更灵活,更高效。 Stre...

嘴角轻扬30
27分钟前
1
0
Docker 可视化管理工具 Panama

Panamax 是一个开源的项目,可以通过简单的拖拉操作就可以实现发布复杂的 Docker 容器应用。Panamax 为 Docker, Fleet & CoreOS 提供友好的管理界面。 容器技术是下一代的虚拟机,但使用该技...

linuxprobe16
28分钟前
2
0
scala中hdfs文件的操作

对于org.apache.hadoop.fs.Path来说, path.getName只是文件名,不包括路径 path.getParent也只是父文件的文件名,同样不包括路径 path.toString才是文件的全路径名 创建文件 hdfs.createNew...

hblt-j
43分钟前
2
0
Eureka 和 zookeeper 的比较

小小小施爷
52分钟前
0
0
c++ 开源算法库 (持续更新)

最近在做算法方面的研究,发现很难找到一个全面而优质的科学计算算法库。不过还是找到一些,在此记录一下,将来也许自己写一个把所有这些整合在一起。本列表会持续不定期更新。 GSL http://w...

propagator
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部