在另一个线程设置CStatic的的宽度,但CStatic的位置居然变了,该如何解决

在另一个线程设置CStatic的的宽度,但CStatic的位置居然变了
下面代码是略微删去了一部分后的
这里想模仿下进度条,但是启动线程以后,CStatic 的位置跑到了窗口左上角。

C/C++ code
class CMainWindow : public CFrameWnd
{
public:
    DECLARE_MESSAGE_MAP()
public:
    CMainWindow();
    CStatic front;
    HBRUSH hBrushBlue;
    void click();
    HBRUSH OnCtlColor(CDC*pDC, CWnd*pWnd, UINT nCtlColor);
};


CMainWindow::CMainWindow()
{
    Create(strClassName,L"",WS_OVERLAPPEDWINDOW);

CRect r;
    r.left = 100;
    r.top = 200;
    r.right = r.left;
    r.bottom = r.top + 20;
    front.Create(L"", WS_CHILD ,r, this,1);
    hBrushBlue = ::CreateSolidBrush(RGB(0,0,255));
}

UINT  ThreadFunc(PVOID p)
{
    CMainWindow * pWnd = (CMainWindow*)p;
    pWnd->front.ShowWindow(SW_SHOW);
    CRect r;

    while( 1 )
    {
        //pWnd->front.GetWindowRect(r);
        //pWnd->front.ScreenToClient(r);
        pWnd->front.GetClientRect(r);
        if( r.Width() <= 500 )//在这行设个断点,发现 r.left 和 r.top 都是 0
            r.right++;
        else
            break;
        pWnd->front.MoveWindow(r);
        ::Sleep(10);
    }
    return 0;
}

void CMainWindow::click()//按钮单击
{
    CWinThread * pThread = AfxBeginThread(ThreadFunc,this,0,0, CREATE_SUSPENDED);
    pThread->ResumeThread();
}

HBRUSH CMainWindow::OnCtlColor(CDC*pDC, CWnd*pWnd, UINT nCtlColor)
{
    if(pWnd== &front)
        return hBrushBlue;
    return CFrameWnd::OnCtlColor(pDC, pWnd, nCtlColor);
}


------解决方案--------------------
pWnd->front.GetClientRect(r);
改成GetWindowRect();
可能用到的坐标转换函数
ScreenToClient();
------解决方案--------------------
一个窗口的客户区坐标,左上坐标当然是0了。
//pWnd->front.GetWindowRect(r);
//pWnd->front.ScreenToClient(r);
pWnd->front.GetClientRect(r);
--------------------
改成
pWnd->front.GetWindowRect(&r);
pWnd->SrceenToClient(&r);
然后再movewindow,这里的front控件应该是个子窗口,movewindow需要的参数是这个子窗口在父窗口上的客户区坐标。