MFC重绘控件,坐标配置相关笔记

本文记录了在MFC应用中处理控件重绘和坐标配置的相关笔记,包括重绘过程中的关键步骤,以及如何进行坐标转换。通过引用的资源,介绍了获取矩形和坐标转换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@2017-12-06

源由
接到任务需要调整窗口适应。这边使用
GetWindowRect
GetClientRect
MoveWindow
三个函数进行操作,但是操作出来的显示都不对,总结问题到这
过程
对于this.xxx()
    //通用的操作是        
    CRect myRect;
    CRect myRect2;
    CRect myRect3;
    GetClientRect(&myRect);
    m_lstCtrlSelTag.GetWindowRect(&myRect2);
    m_lstCtrlSelTag.GetClientRect(&myRect3);
    int tmp =myRect2.Width();
    m_lstCtrlSelTag.MoveWindow(myRect.Width()-myRect2.Width(), myRect3.top,
        myRect2.Width(), myRect2.Height());
/*调整的执行需要依靠MoveWindow
    然而,MoveWindow是一种函数。功能是改变指定窗口的位置和大小。对子窗口来说,位置和大小取决于父窗口客户区的左上角;对于Owned窗口,位置和大小取决于屏幕左上角。
*/

/*调整的信息需要依靠GetWindowRect和GetClientRect
     GetWindowRect();获取的是以屏幕为坐标轴,此窗口在屏幕上的位置。
    GetClientRect();获取的是以其自身的最左上角的点为坐标原点,此窗口的位置。

*/

/*坐标转换
    ClientToScreen是把坐标从当前窗体转化成全屏幕的!!!
    ScreenToClient是把屏幕坐标转化成相对当前窗体的坐标!!!!
    注意此处的参数是 cpoint,而不是rect
    对于movewindow来说这个刚好用来确定起始点,见其参数。
*/
名词
屏幕
系统区
客户区
坐标
控件或者窗体的移动需要以上一级父窗为基准的相对坐标
然而当前只能获取到,
    以屏幕为基准的绝对坐标。
    自身的客户坐标。
那么就要坐标转换,
    屏幕坐标减去

矩形获取 https://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html
坐标转换http://blog.youkuaiyun.com/ljh0600301217/article/details/8736494

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值