小弟我晕了。子窗口居中于主窗口如何计算的

我晕了。子窗口居中于主窗口怎么计算的?
我计算了半天坐标不对- -脑子已经晕了。


RECT rc = {0};
RECT mainRect = {0};
GetWindowRect(&mainRect);

int top,left;
::GetClientRect(newForm,&rc);
left = mainRect.right - (mainRect.right-mainRect.left)/2 + (rc.right-rc.left)/2;
top = mainRect.top - (mainRect.bottom-mainRect.top)/2 + (rc.bottom-rc.top)/2;

::SetWindowPos(newForm,NULL, left, top,0,0,SWP_NOSIZE|SWP_HIDEWINDOW);

------解决方案--------------------
GetWindowRect();
ScreenToClient();
------解决方案--------------------
CenterWindow函数
------解决方案--------------------
GetWindowRect(newForm, &rc);
left = (mainRect.left+mainRect.right - (rc.right - rc.left)) / 2;
top = (mainRect.top+mainRect.bottom - (rc.bottom - rc.top)) / 2;

如果是用GetClientRect就没算标题栏等非客户区
GetClientRect(newForm, &rc);
left = (mainRect.left+mainRect.right - rc.right) / 2;
top = (mainRect.top+mainRect.bottom - rc.bottom) / 2;
------解决方案--------------------
mainRect确保是你的福窗口
left = mainRect.left+(mainRect.width()-rc.width)/2;