我正在使用MFC for Visual Studio 2003。我有一个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。
有人知道这是怎么回事吗?
发布于 2009-12-16 05:22:03
您对MoveWindow的调用正在调整大小。您需要使用GetWindowRect而不是GetClientRect。
客户端rect只包括client area,它是窗口的非窗口元素(如边框)。
发布于 2009-12-16 05:21:44
客户端矩形不包括窗口边框,但MoveRect需要一个包含边框的矩形。请改用GetWindowRect。
https://stackoverflow.com/questions/1910469
复制相似问题