3

我正在为 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.toprc.left正如预期的那样,0一路走来。但是:
在第一次调用 之后GetClientRect,我得到rc.bottom == 52rc.right == 575
在第二次调用 后GetClientRect,我得到rc.bottom == 48rc.right == 571

有谁知道发生了什么?

4

2 回答 2

6

您对MoveWindow的调用正在调整大小。您需要使用GetWindowRect而不是GetClientRect

客户端矩形只包含client area窗口的非窗口元素(如边框)​​。

于 2009-12-15T21:22:02.513 回答
3

客户端矩形不包括窗口边框,但 MoveRect 需要一个包含边框的矩形。请改用 GetWindowRect。

于 2009-12-15T21:21:44.043 回答