现在的位置: 首页 > 综合 > 正文

GetWindowRect和GetClientRect

2013年11月26日 ⁄ 综合 ⁄ 共 982字 ⁄ 字号 评论关闭

GetWindowRect和GetClientRect

  函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。

  函数原型:BOOL GetWindowRect(HWND hWnd,LPRECT lpRect);

  在Visual Studio 2005中,函数原型为void GetWindowRect(LPRECT lpRect) const;

  是属于CWnd类的函数.

  参数:

  hWnd:窗口句柄。

  lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。

  变量:

  bottom ;left ;right; top;

  分别表示该窗口的底部/左侧/右侧/顶部坐标

  返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。

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。

抱歉!评论已关闭.