文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 233
阅读 8
收藏 0
点赞 0
评论 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
窗口设置最顶端,全屏

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

长平狐
2012/10/08
397
0
GetDC,GetDCEX,GetWindowDC

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

yintao
2014/11/17
0
0
【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理

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

长平狐
2012/11/12
110
0
MFC绘图2-客户区大小和DC

MFC绘图2-客户区大小和DC 客户区大小和DC 在绘图前,必须先得到客户区大小和设备上下文DC。 1.获得客户区 绘图一般都是在视图窗口的客户区进行,而客户区的大小在运行时可由用户改变,为了使...

IMGTN
2012/06/10
0
0
GetWindowRect

函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。 函数原型:BOOL GetWindowRect(HWND hWnd,LPRECTlpRect); 参数: hWnd:窗口句柄。 lpRe...

云栖希望。
2017/12/04
0
0
CDC绘图总结

GDI总结:http://dingchaoqun12.blog.163.com/blog/static/11606250420112213396361/ 对话框 控件 视图类 应用程序框架都会调用该CWnd的消息响应成员函数(的覆盖)来绘制窗口客户区。 在Win...

长平狐
2012/10/08
2.3K
0
vc 对话框分割窗口

对话框的分割可以进行自绘实现,不过太复杂麻烦。mfc中CSplitterWnd类只能在框架窗口中使用,为了分割对话框,可以把框架窗口作为对话框的子窗口,具体可以这样做, 继承view,作为分割后的视...

Ne0o0
2016/04/01
44
0
ClientToScreen ()与 ScreenToClient()

ClientToScreen( )是把窗口坐标转换为屏幕坐标 pWnd->GetWindowRect(&rc);是获取整个窗体的大小 pWnd->GetClientRect(&rc1);是获取窗体中客户区的大小 ScreenToClient( )是把屏幕坐标转换为窗...

zhangyujsj
2014/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
4分钟前
0
0
单点登录的设计,从单域名到多域名(经验分享)

个人实践总结,最初的的需求,多个产品线都在同一个根域名下面。 独立的用户中心分离,单独负责用户登录和用户信息获取、变更等处理逻辑。 第一步,用户登录成功,分配给用户一个memToken(令...

小海bug
6分钟前
0
0
合格前端第十二弹-TypeScript + 大型项目

写在前面 TypeScript 已经出来很久了,很多大公司很多大项目也都在使用它进行开发。上个月,我这边也正式跟进一个对集团的大型运维类项目。 项目要做的事情大致分为以下几个大模块 一站式管理...

qiangdada
10分钟前
0
0
编程学习之如何在Node.js中优化服务器端渲染?[图]

编程学习之如何在Node.js中优化服务器端渲染?[图] 在 Airbnb,我们花了数年时间将所有前端代码迁移到 React 架构,Ruby on Rails 在 Web 应用中所占的比例每天都在减少。实际上,我们很快会...

原创小博客
11分钟前
0
0
gradle学习笔记

相关文档 适合新手的 gradle 自学教程合集 Gradle教程

OSC_fly
26分钟前
0
0
Virtual Serial Port - RFC2217

Virtual Serial Port for Linux RFC-2217 The COM Port Control Protocol pyserial - RFC 2217 NetSerial - Windows Telnet COM Port - RFC Official Using Python, How do I make a virtual......

zungyiu
33分钟前
0
0
全球的IPv6部署急剧增加,中国进度较慢

导读 全球的IPv6部署继续增加,但中国在IPv6方面还需要努力,从部署图上分析,中国几乎没有几个地方是普及IPv6的。这6年来,自世界IPv6发布以来,全球网络和服务提供商的IPv6部署水平急剧增加...

问题终结者
37分钟前
1
0
好看的电影记录

星际迷航三 狂暴之路 新木乃伊 黑夜传说 铁血战士2

xd03122049
40分钟前
0
0
记录Yii2框架开发遇到微信错误提示

转载地址 记录Yii2框架开发遇到微信错误提示 微信公共号开发,提示“该公众号暂时无法提供服务,请稍后再试”,如何解决? 以前使用Yii框架的时候,并没有像Yii2,以前的Yii框架似乎用起来在...

durban
42分钟前
1
0
LSM树(Log-Structured Merge Tree)存储引擎浅析

其实每一种数据库,它都是一种抽象的数据结构的具体实现。 随着rocksDB(facebook的),levelDB(google的),以及我们熟知的hbase,他们都是使用的LSM树结构的数据库。 它的核心思路其实非常...

算法之名
56分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部