GetWindowRect、GetClientRect、ScreenToClient、ClientToScreen的区别
来源:互联网 发布:win7 nls数据丢失 编辑:程序博客网 时间:2024/06/09 19:42
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
- GetWindowRect、GetClientRect、ScreenToClient、ClientToScreen的区别
- GetWindowRect、GetClientRect、ClientToScreen、ScreenToClient
- ClientToScreen ScreenToClient GetWindowRect GetClientRect
- GetClientRect , GetWindowRect ,ClientToScreen和ScreenToClient的疑问
- GetClientRect , GetWindowRect ,ClientToScreen和ScreenToClient的疑问
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- GetWindowRect,GetClientRect,ClientToScreen 和ScreenToClient
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- GetWindowRect, GetClientRect, ScreenToClient的区别
- GetWindowRect GetWindowRect ScreenToClient ClientToScreen 区别
- GetClientRect,GetWindowRect,ClientToScreen,ScreenToClient这四个函数的理解
- MFC的坐标转换GetClientRect/GetWindowRect/ClientToScreen/GetCursorPos/ScreenToClient
- MFC的坐标转换GetClientRect/GetWindowRect/ClientToScreen/GetCursorPos/ScreenToClient
- VC++中的GetWindowRect,GetClientRect,ScreenToClient , ClientToScreen();
- 关于ClientToScreen、ScreenToClient、GetClientRect和GetWindowRect四个函数之间的关系
- GetClientRect相当于GetWindowRect和ScreenToClient区别
- GetClientRect相当于GetWindowRect和ScreenToClient区别
- 位运算符
- Oracle 的 rownum
- json数据转化为对应的对象
- androidstudio学习之拆分项目v2ex Preference 、CkeckBoxPrefrence应用
- Unity3D中的工具类-Time类
- GetWindowRect、GetClientRect、ScreenToClient、ClientToScreen的区别
- Unity3D手游开发日记(3) - 场景加载进度条的完美方案
- Ruby语法十分钟
- C++文件读写详解(ofstream,ifstream,fstream)
- 四大内置对象
- 内存模型,Java内存模型,volatile关键字解析
- UI基础-UITableViewHeaderFooterView组标题数据不加载,好友列表只能点击不能打开
- 改变图片的饱和度、亮度、对比度
- MFC对话框界面美化