GetWindowRect和GetClientRect 区别

       

           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

         -------------------------------------------------------------------------------------------

         GetClientRect     |       0       0       281   159          |  0    0    281  159

         ClientToScreen   |     372    303    653   462          |  0    0    281  159 

 

 

 

 

 

 

参考资料:

 

http://yecheng110.blog.hexun.com/9954162_d.html

你可能感兴趣的:(GetWindowRect和GetClientRect 区别)