MFC重繪控件,座標配置相關筆記

@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

發佈了67 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章