关于GetClientRect与GetWindowRect的误区

目的:获得控件m_list的客户区坐标。

有人会想当然的写出如下代码:

CRect rect;
m_sheet.GetClientRect(&rect);

他们认为GetClientRect是获取客户区坐标系下的坐标,所以直接用控件变量来调用该函数。

 事实是:GetClientRect确实是获取客户区坐标系下的坐标,不过当控件调用它时,获取的是控件坐标系下的坐标。

 什么意思呢?你只要记住GetClientRect不论谁调用它,TopLeft的坐标永远是(0,0),意思就是GetClientRect获取的信息只有BottomRight是有效的信息,TopLeft信息是无意义的。

  知道了这点,那么想获取控件的客户区坐标,通过调用GetClientRect是行不通的,只有通过调用GetWindowRect,获取屏幕坐标,再调用ScreenToClient转换成客户区坐标系下的坐标。以下是示例代码:

CRect rect;
		m_sheet.GetWindowRect(&rect); 
		ScreenToClient(&rect);
		


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值