我在Visual Studio 2003中使用MFC。我有一个ID为IDC_COMMENT_EDIT
的编辑控件。
在以下代码中,在我第一次调用GetClientRect
后,我不希望rc
的值发生变化。
CWnd* pWnd = GetDlgItem(IDC_COMMENT_EDIT);
if (pWnd != NULL)
{
RECT rc;
pWnd->GetClientRect(&rc);
pWnd->MoveWindow(&rc, TRUE);
pWnd->GetClientRect(&rc);
}
正如预期的那样, rc.top
和rc.left
一直是0
。
然而:
在第一次致电GetClientRect
后,我得到rc.bottom == 52
和rc.right == 575
在第二次致电GetClientRect
后,我得到rc.bottom == 48
和rc.right == 571
。
有谁知道发生了什么事?
答案 0 :(得分:5)
您对MoveWindow的来电正在调整大小。您需要使用GetWindowRect代替GetClientRect。
客户端rect仅包含client area
,它是窗口的非窗口元素(例如边框)。
答案 1 :(得分:3)
客户端rect不包含窗口边框,但MoveRect需要一个包含边框的矩形。改为使用GetWindowRect。