Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162311
  • 博文数量: 30
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-25 19:05
文章分类

全部博文(30)

文章存档

2009年(3)

2008年(27)

我的朋友

分类: WINDOWS

2008-11-27 20:11:12

    GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。
  GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  
  ClientToScreen把客户区坐标系下的RECT坐标转换为屏幕坐标系下的RECT坐标.
  ScreenToClient把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标.     
    我们对同一个窗口先GetWindowRect取得一个RECT,再用ScreenToClient转换到客户坐标系。
    然后GetClientRect取得一个RECT,再用ClientToScreen转换到屏幕坐标系。
    显然,GetWindowRect取得的矩阵不小于GetClientRect取得的矩阵。因为前者包含了非客户区,而后包括了客户区。   
  对GetWindowRect取得的矩阵ScreenToClient后,矩阵的大小没有变小,(-3,-29)是窗口的左上角的坐标,相对窗口客户区左上角。   
  对GetClientRect取得的矩阵ClientToScreen后,矩阵也没有变大,新得到的矩阵是窗口客户区在屏幕坐标系上的RECT。 
  
函数  RECT   RECT左上角坐标
GetWindowRect 369 274 656 465  0 0 287 191
ScreenToClient -3  -29 284 162  0 0 287 191
GetClienRect  0   0  281 159  0 0 281 159
ClientToScreen 372 303 653 462  0 0 281 159
 
 
阅读(1409) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-12-12 12:52:02

分析的很详细 高手啊 收藏了 谢谢!