C++ MFC GetWindowRect()函数?(GetWindowRect()函数的用法,求实例)
- GetWindowRect()函数的用法,求实例
- MFC中,结构体RECT的成员变量到底是什么意思?GetWindowRect和GetItemRect又是什么?
- MFC 用GetWindowRect遇到问题。请大家来看一下
- MFC中函数GetWindowRect和GetClientRect的区别
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 中白色的区域就是客户区. 而且是客户坐标.