MFC的GetClientRect和MoveWindow不保留大小?

des*_*ons 3 mfc visual-studio-2003 visual-c++

我在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);
}
Run Code Online (Sandbox Code Playgroud)

rc.top并且rc.left0按预期的方式全部通过的方式.但是:
在第一次打电话之后GetClientRect,我得到了rc.bottom == 52,和rc.right == 575.
第二次打电话后GetClientRect,我得到了rc.bottom == 48,和rc.right == 571.

有谁知道发生了什么事?

Bri*_*ndy 5

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

客户端rect仅包括client area窗口的非窗口元素(例如边框).