MFC一一GetWindowRect与GetClientRect区别

一、GetWindowRect,获取整个窗体的大小,该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。

如下截取屏幕中显示的Dialog及Button按钮在屏幕上的位置


然后通过调试查看对应的坐标显示:

1、获取Dialog窗体大小,相对屏幕坐标


利用ScreenToClient把屏幕坐标转化成相对当前客户区的坐标

我们发现top和left为负值,原因主要是因为这个时候的转换是基于Client的原点进行的,即客户区的左上角。因为原来的窗口左上角位于Client原点的左上方,所以是负值。

2、获取控件Button大小,相对屏幕坐标


利用ScreenToClient把屏幕坐标转化成相对当前控件的坐标


二、GetClientRect,获取窗体中客户区的大小

1、获取Dialog窗体大小,相对窗口客户区的左上角而言


利用ClientToScreen转换为屏幕坐标,也就是客户区相对屏幕的坐标,此处可以与上面Dialog相对屏幕的坐标

(top=0,buttom=446,left=679,right=1166)做对比,发现相减,即为窗体除客户区之外的地方(标题栏,菜单栏等边框)


2、获取Button控件大小,相对控件左上角而言


        此处得到的Button坐标与上述Button相对屏幕坐标(GetWindowRect)并转化为相对当前控件的坐标是一致的。

利用ClientToScreen转化为相对屏幕的坐标


总结:

    1、GetWindowRect获取窗体/控件的大小是相对屏幕坐标的,其通常与ScreenToClient转化为相对客户区/控件本身的坐标

    2、GetClientRect获取窗体/控件的大小是相对客户区/控件本身坐标的,其通常与ClientToScreen转化为相对屏幕的坐标。

参考文章:

http://blog.csdn.net/ljh0600301217/article/details/8736494

https://www.cnblogs.com/wb-DarkHorse/archive/2013/07/08/3178201.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值