GetClientRect相当于GetWindowRect和ScreenToClient区别

From: http://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html


GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 
GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  
用GetClientRect返回的RECT结构上左为零, 右下分别对应客户区的宽度和高度;

ScreenToClient把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标.     
我们对同一个窗口先GetWindowRect取得一个RECT,再用ScreenToClient转换到客户坐标系。
然后GetClientRect取得一个RECT,再用ClientToScreen转换到屏幕坐标系。
显然,GetWindowRect取得的矩阵不小于GetClientRect取得的矩阵。因为前者包含了非客户区,而后包括了客户区。   

对GetWindowRect取得的矩阵ScreenToClient后,矩阵的大小没有变小,left,top是窗口的左上角的坐标,相对窗口客户区左上角。   

对GetClientRect取得的矩阵ClientToScreen后,矩阵的大小也没有变大,新得到的矩阵是窗口客户区在屏幕坐标系上的RECT。

二、

GetWindowRect 获取的是整个window 的rect 包括标题栏 之类的周边. 而且是屏幕坐标

GetClientRect 获取的是客户区, 建立一个单文档程序运行起来后。你看到window 中白色的区域就是客户区. 而且是客户坐标.

ScreenToClient 这个则是把屏幕坐标转换成客户坐标.
比如 你的屏幕是1000*1000 大小 
你在100*100 的地方创建了一个 200*200 窗口 
那么你用GetWindowRect 取得的RECT 就应该是 top=100,left=100,right=300,bottom=300.
假如这个窗口标题栏高 10 那么 用GetClientRect 取得的RECT就应该是 top=0,left=0,right=200,bottom=190。

现在你在这个窗口上单击了一下, 假如是屏幕是的 x=200,y=200 那么 你用ScreenToClient转换后相对这个窗口而言x,y 就会变为
x=100, y=100



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编中call printf参数压栈时错误理解

EAX, ECX,EDX,EBX均可以32bit,16bit,8bit访问&#xff0c;如下所示: <-------------------EAX------------------------>|<----------------------|-----------|----------->|             |<---------AX--------->|             |&…

ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题

一、问题描述使用zTree的异步刷新父级菜单时&#xff0c;服务器返回中文乱码&#xff0c;但项目中使用了SpringMvc&#xff0c;已经对中文乱码处理&#xff0c;为什么还会出现呢&#xff1f;此处为的异步请求的配置&#xff1a;Java代码async: {enable: true,url: basePath /s…

在命令提示符下输入的命令

ASSOC 显示或修改文件扩展名关联。ATTRIB 显示或更改文件属性。BREAK 设置或清除扩展式 CTRLC 检查。BOOTCFG 设置 boot.ini 文件的属性以便控制启动加载。CACLS 显示或修改文件的访问控制列表(ACL)。CALL 从另一个批处理…

(转载)WebSphere MQ安装过程

参考文档&#xff1a; http://www.ibm.com/developerworks/cn/linux/linux-speed-start/l-ss-mq/ 转载于:https://www.cnblogs.com/lichmama/p/4312577.html

Vue.config.productionTip = false 是什麽意思

Vue.config.productionTip false 是什麽意思

non-aggregates cannot be initialized with initializer list

From: http://blog.csdn.net/sp_daiyq/article/details/7008990 我定义了一个结构体&#xff0c;示意如下&#xff1a; [cpp] view plaincopyStruct A { int x; CString test; }; 然后我定义一个变量同时对其进行串行初始化&#xff1a; A a {0, "hello&q…

xxljob 配置具体定时任务_记一次xxl-job定时任务没有触发的问题

当初选了xxl-job就是因为它的触发机制比较靠谱,到点准时发,而且有日志可以看。 昨天突然发现部署在一台本地机器上的xxl-job到点并没有触发,且没有任何日志。通过管理页面查询触发日志,发现日志还是有的,只是和筛选条件不甚匹配。比如选取了昨天的日志,结果集中包含了今天…

TOMCAT启动完成但是ECLIPSE仍然显示starting....

最近重新部署了一个TOMCAT服务&#xff0c;但是启动碰到个问题&#xff0c;虽然TOMCAT控制台已显示启动成功&#xff0c;但是ECLIPSE右下角仍然一直显示STARTING&#xff0c;最后TOMCAT超时&#xff0c;启动失败。之前以为是拷贝工程的问题&#xff0c;但其实是SERVER配置的问题…

StatusCodeError: 400 - “{\“code\“:40000,\“error\“:\“错误 Error: 登录用户不是该小程序的开发者

StatusCodeError: 400 - “{\“code\“:40000,\“error\“:\“错误 Error: 登录用户不是该小程序的开发者

例解 autoconf 和 automake 生成 Makefile 文件

From: http://www.ibm.com/developerworks/cn/linux/l-makefile/ 简介&#xff1a; 本文介绍了在 linux 系统中&#xff0c;通过 Gnu autoconf 和 automake 生成 Makefile 的方法。主要探讨了生成 Makefile 的来龙去脉及其机理&#xff0c;接着详细介绍了配置 Configure.in 的方…

爱慕内衣信息化颠覆流程重构供应链

通过IT&#xff0c;爱慕内衣进行了供应链流程的颠覆和重构。在北京慕集团首席信息官赵先生脑海中&#xff0c;一直有着这样一幅“大图景”&#xff1a;只要需要&#xff0c;老总在自己的办公室里能看到每一寸原料的采购情况&#xff0c;每一件成衣的生产和销售情况&#xff0c;…

mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...

查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数好的&#xff0c;第一道题&#xff0c;刚开始做&#xff0c;就栽了个跟头&#xff0c;爽歪歪&#xff0c;至于怎么栽跟头的——需要分析题目&#xff0c;查询的是&#xff0c;查询的是(1)学生的信息…

专门讲讲这个MYSQL授权当中的with grant option的作用

对象的owner将权限赋予某个用户(如:testuser1) grant select ,update on bd_corp to testuser1 [with grant option ]1.如果带了 with grant option 那么用户testuser1可以将select ,update权限传递给其他用户( 如testuser2)grant select,update on bd_corp to testuser22.如果…

HBuilder更改为自定义的背景颜色

HBuilder更改为自定义的背景颜色

Linux下Makefile的automake生成全攻略

From: http://fanqiang.chinaunix.net/system/linux/2005-12-14/3926.shtml 作为Linux下的程序开发人员&#xff0c;大家一定都遇到过Makefile&#xff0c;用make命令来编译自己写的程序确实是很方便。一般情况下&#xff0c;大家都是手工写一个简单Makefile&#xff0c;如果要…

mysql中limit 0 20_MYSQL 中 LIMIT 用法

mapper文件中的sql&#xff1a;--------------------------------------------------------------------------------------------(在实体类中定义的属性)start:从第几条记录开始。size:读取几条记录。select id"findAllUsers" parameterType"Map" resultT…

VSFTP配置详解+虚拟用户的支持

FTP 搭建第一部分&#xff1a;理论一. FTP服务器的基本原理1. 基本概念&#xff1a;ftp是文件传输协议&#xff0c;&#xff08;file transport portocol&#xff09;2. 数据传输模式&#xff1a;主动模式和被动模式 &#xff08;要和binary ascii 区分一下&#xff09;3. 使用…