文章类型: VC&C++
关键词: VC,GetWindowRect,GetClientRect,窗口定位,相对位置,绝对位置,相对屏幕,获取坐标
内容摘要: VC++下的GetWindowRect和GetClientRect

VC++下的GetWindowRect和GetClientRect

2017/11/30 17:10:04    来源:apple    阅读:

一、GetWindowRect和GetClientRect介绍


GetWindowRect

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


函数原型:

void GetWindowRect(

   LPRECT lpRect 

) const;


参数:

lpRect:指向一个CRect对象或者RECT结构指针,用来接收左上和右下角的屏幕坐标。

返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。

备注:复制CWnd对象的外界矩形的尺寸到指向lpRect的结构。尺寸是在屏幕坐标相对显示屏幕左上角给出的,包含已经存在的标题、边框和滑动条尺寸。


GetClientRect

函数功能:取回客户区坐标。

函数原型:

BOOL GetClientRect( 

   LPRECT lpRect  

) const throw();

参数:

lpRect  指向一个RECT结构或一个CRet对象,用来取回客户坐标。left和top成员是0,right和bottom成员包含窗口的宽和高。

备注:复制CWnd客户区域的客户坐标到lpRect指向的结构。客户坐标指定客户区域的左上和右下角。囿于客户坐标相对CWnd客户区域的左上


角,左上角的坐标是(0,0)。


二、GetWindowRect和GetClientRect的异同


1、

GetWindowRect获得的是在屏幕坐标系下的尺寸,即以屏幕左上角为原点,得到的结果可能是CRect(10,23,234,332)

GetClientRect,获得的是在客户区坐标系下的尺寸,即以所在窗口左上角为原点,得到的结果CRect(0,0,width,height)即左上角坐标(x,y)


只能是(0,0)。

2、

两者得到的尺寸都包含窗口或控件的标题、滑条、边框尺寸。这也使得两者转换成为可能。


三、GetWindowRect和GetClientRect的转换


1、

CWnd::ClientToScreen

需要包含头文件afxwin.h。


函数原型:

void ClientToScreen(

   LPPOINT lpPoint 

) const;

void ClientToScreen(

   LPRECT lpRect 

) const;


2、

ScreenToClient

需要包含头文件afxwin.h。


结构原型:

void ScreenToClient(

   LPPOINT lpPoint 

) const;

void ScreenToClient(

   LPRECT lpRect 

) const;



附:LPPOINT结构和LPRECT结构定义

typedef struct tagPOINT

{

    LONG  x;

    LONG  y;

} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;


typedef struct tagRECT

{

    LONG    left;

    LONG    top;

    LONG    right;

    LONG    bottom;

} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;


四、示例

// resize dialog to client's size

void CMyDlg::OnSizeToClient()

{

   CRect myRect;

   GetClientRect(&myRect);


   ClientToScreen(myRect);

   MoveWindow(myRect.left, myRect.top,

      myRect.Width(), myRect.Height());

}


参考资料:MSDN

↑ 上一篇文章:在VC的MFC中修改静态文本框中文字的字体、颜色 关键词:VC,MFC,修改,静态,文本框,文字,字体,颜色 发布日期:2017/11/29 16:43:15
↓ 下一篇文章:.NET发布网站运行时出现:System.BadImageFormatException: Could not load file or assembly 'System.Data.SQLite' or one of its dependencies. 试图加载格式不正确的程序 关键词:dotnet,CSharp,BadImageFormat.. 发布日期:2017/12/4 8:50:26
相关文章:
适用于各种主流浏览器的JS弹出一个相对位置的浮动层 关键词:javascript,JS,浮动层,div,各种浏览器,弹出,一个,相对位置,css,层,绝对位.. 发布日期:2015-07-20 17:37
如何将bmp格式的图片转换成8位256色且保证不失真呢 关键词:VC,ps,将,bmp图片,转换,8位,256色,不失真,faststone,image,vie.. 发布日期:2016-08-10 16:28
VC中的SetFont()修改字体大小及样式的问题 关键词:VC,SetFont,修改,字体,大小,样式 发布日期:2018-12-05 15:45
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......