2009-12-15 56 views
3

我使用MFC進行Visual Studio 2003.我有一個編號爲IDC_COMMENT_EDIT的編輯控件。 在下面的代碼中,在我第一次撥打GetClientRect後,我不希望rc的值發生變化。MFC的GetClientRect和MoveWindow不保留大小?

CWnd* pWnd = GetDlgItem(IDC_COMMENT_EDIT); 
if (pWnd != NULL) 
{ 
    RECT rc; 
    pWnd->GetClientRect(&rc); 
    pWnd->MoveWindow(&rc, TRUE); 
    pWnd->GetClientRect(&rc); 
} 

rc.toprc.left0一路過關斬將,符合市場預期。 但是:
第一次致電GetClientRect後,我得到rc.bottom == 52rc.right == 575
第二次調用GetClientRect後,我得到rc.bottom == 48,和rc.right == 571

沒有人有任何想法是怎麼回事?

回答

5

您對MoveWindow通話是在調整。您需要使用GetWindowRect而不是GetClientRect

客戶端RECT僅包括client area這是窗口的非窗口元素(如邊框)​​。

+0

謝謝,我想不通爲什麼我的文本框不斷縮小! – des4maisons 2009-12-16 14:59:25

+0

沒問題,常見問題。這是命名一個既移動又調整MoveWindow大小的函數的問題! – 2009-12-16 15:38:39

+0

一個更好的名字會像AdjustWindowRect – 2009-12-16 15:39:10

3

客戶端RECT不包括窗口邊界,但MoveRect預計包含邊框的矩形。改用GetWindowRect。

+0

感謝您的幫助! – des4maisons 2009-12-16 15:00:32