@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.csdn.net/ljh0600301217/article/details/8736494