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

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

MFC一一GetWindowRect与GetClientRect区别

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

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

MFC一一GetWindowRect与GetClientRect区别

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

MFC一一GetWindowRect与GetClientRect区别

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

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

MFC一一GetWindowRect与GetClientRect区别

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

MFC一一GetWindowRect与GetClientRect区别

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

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

MFC一一GetWindowRect与GetClientRect区别

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

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

MFC一一GetWindowRect与GetClientRect区别

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

MFC一一GetWindowRect与GetClientRect区别

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

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

MFC一一GetWindowRect与GetClientRect区别

总结:

    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

相关文章:

  • 2021-12-05
  • 2022-12-23
  • 2021-08-11
  • 2021-04-15
猜你喜欢
  • 2021-11-07
  • 2022-01-05
  • 2021-11-24
  • 2021-05-31
  • 2022-02-20
  • 2021-08-06
相关资源
相似解决方案