关于GetClientRect与GetWindowRect的误区
  TEZNKK3IfmPf 2024年03月29日 37 0

目的:获得控件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);
		
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月29日 0

暂无评论

TEZNKK3IfmPf