@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