vc高手请帮我解答一下
来源:百度知道 编辑:UC知道 时间:2024/07/02 12:46:25
BOOL GetClientRect(
HWND hWnd,
LPRECT lpRect
);
hWnd : 要得到坐标的区域所在窗口的句柄
lpRect : 保存坐标信息的RECT 结构体指针
要先声明一个RECT结构,然后将地址传给lpRect
例如:
RECT rect;
GetClientRect(hWnd, &rect);
rect: left, top 均为0, right , bottom 分别为区域长与宽
返回值非0 表示成功
传给x: x = rect.right 或者 x = rect.right - rect.left(为什么加上 -rect.left呢, 纯属习惯)
注: 工具栏也属于client 范围
----------------------------------------------
另外, 经常会遇到这样的问题: 想设置client 区域为固定大小,例如:640*480
这时,不能简单的在调用SetWindowPos时指定cx, cy 为 640, 480
因为窗口长还包括边框, 宽包括边框和标题栏, 所以还要调用
GetSystemMetrics, 分别得到SM_CXFRAME, SM_CYFRAME, SM_CYCATION的值, 然后将cx, cy 分别加上它们才行
win32常规编程就是楼上所说,用MFC的话,有个类CRect可以代替RECT;
MFC下:
BOOL GetClientRect(
LPRECT lpRect
);
比如,你定义了一个CRect rect;
就可以GetClientRect(&rect);或GetClientRect(rect);
用MSDN查CRect.看他的成员变量,用宽,高,顶,底,左上点,右上点等等。