1. 首页 > 科技

C++ MFC GetWindowRect()函数?(GetWindowRect()函数的用法,求实例)

C++ MFC GetWindowRect()函数?(GetWindowRect()函数的用法,求实例)

GetWindowRect()函数的用法,求实例

展开全部

得到窗口的区域

CRect rc;

GetWindowRect(&rc);

MFC中,结构体RECT的成员变量到底是什么意思?GetWindowRect和GetItemRect又是什么?

RECT 是M$ windows API中定义的一个结构体类型用来描述 矩形范围 上下左右的 坐标

typedef struct _RECT {

LONG left;

LONG top;

LONG right;

LONG bottom;

} RECT, *PRECT;

你可以去查msdn或者直接打开头文件windef.h看

windows提供给你一个叫做GetWindowRect的函数(这里是mfc CWnd类的成员函数,其实就是同名API函数包装下)

你去调用这个函数 这个函数就可以返回一个RECT类型的数据但是你需要自定定义一个RECT类型的变量

并且把这个变量的地址传给这个函数,这个函数会把返回值写入到这个传入地址对应的内存变量中

LZ C语言估计没学好,不然不会看不明白这是典型的 指针和结构体的综合运行

这个加5神马你得先宝明白神马是窗口的客户区,客户区坐标怎样的

举例:一个窗口中有一个按钮

这个按钮相对窗口 客户区左上角坐标是 水平100,垂直50 ,按钮大小 宽80,搞35,

那么你写代码得到这个按钮的“RECT” 就是 left 100 ,top 50 ,right 180 ,bottom 85

( 窗口关系问题,tab的子窗口item 的坐标相对父窗口tab的左上角,父子窗口关系,

还有一种是相对屏幕左上角的坐标关系)

希望LZ 能明白

MFC 用GetWindowRect遇到问题。请大家来看一下

BOOL ScreenToClient(

HWND hWnd,

LPPOINT lpPoint //第二个参数是点的指针,而不是矩形区域

);

//可以这样改,将矩形区域的左上角的顶点转换为客户区坐标

POINT p;

p.x = rect.left;

p.y = rect.top;

GetDlgItem(IDC_BUTTON1)->ScreenToClient(&point);

MFC中函数GetWindowRect和GetClientRect的区别

GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。

GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  

用GetClientRect返回的RECT结构上左为零, 右下分别对应客户区的宽度和高度;

GetWindowRect 获取的是整个window 的rect 包括标题栏 之类的周边. 而且是屏幕坐标

GetClientRect 获取的是客户区, 建立一个单文档程序运行起来后。你看到window 中白色的区域就是客户区. 而且是客户坐标.