GetWindowRect:
函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
函数原型:BOOL GetWindowRect(HWND hWnd,LPRECTlpRect)
在Visual Studio 2005中,函数原型为void GetWindowRect(LPRECT lpRect) const
。
CWnd::GetClientRect
函数功能:该函数返回指定窗口的客户区的尺寸。该尺寸的x和y值一直为0。
函数原型:void GetClientRect( LPRECT lpRect ) const
;
先调用GetWindowRect后再调用ScreenToClient,这个时候得到的rect和直接使用GetClientRect得到的值是相等的。
有时候需要获得窗口矩形的大小和客户区矩形的大小二者的值,故需要分别调用GetWindowRect和GetClientRect。
如果只需要获得客户区矩形的大小,调用GetClientRect就行了。
GetWindowRect() 得到的是在屏幕坐标系下的RECT;(即以屏幕左上角为原点)
GetClientRect() 得到的是在客户区坐标系下的RECT; (即以所在窗口左上角为原点)
GetWindowRect()取的是整个窗口的矩形;
GetClientRect()取的仅是客户区的矩形,也就是说不包括标题栏,外框等;
第一个函数获得的是窗口在屏幕上的位置,得到的结果可能是这样CRect(10,10,240,240);
第二个函数和它不同,它只获得了客户区的大小,因此得到的结果总是这样CRect(0,0,width,height);
ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。
GetClientRect得到的是客户区的大小,也就是说这样得到的左上角永远是(0,0)。
GetWindowRect 是窗口相对于整个屏幕的坐标,屏幕左上点为0,0。
相互转化用ScreenToClient 或者 ClientToScreen。