MFC显示对话框的位置,该怎么解决

MFC显示对话框的位置
//获取窗口显示的位置
GetDlgItem(IDC_STATIC_Child)->GetWindowRect(ChildFunctionRect);
ScreenToClient(ChildFunctionRect);//把屏幕的值转成实际的值

//在指定位置显示对话框
CDevelopInformationDlg *pInforDlg=new CDevelopInformationDlg;
pInforDlg->Create(IDD_DevelopInformationDlg);
pInforDlg->MoveWindow(ChildFunctionRect);
pInforDlg->ShowWindow(SW_SHOW);

其中的IDC_STATIC_Child是MFC中一个组框的ID,我的目的是在组框的位置处,显示一个一样大小的对话框IDD_DevelopInformationDlg,
但是结果显示出来,大小是对了,只是位置却偏左上方了

------解决方案--------------------
好像不用ScreenToClient(ChildFunctionRect);这句吧
其实这个就是windowrect和clientrect的区别,了解了就知道怎么回事了吧?

GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 
GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  

ClientToScreen把客户区坐标系下的RECT坐标转换为屏幕坐标系下的RECT坐标. 

ScreenToClient把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标.我们对同一个窗口先GetWindowRect取得一个RECT,再用ScreenToClient转换到客户坐标系。然后GetClientRect取得一个RECT,再用ClientToScreen转换到屏幕坐标系。显然,GetWindowRect取得的矩阵不小于GetClientRect取得的矩阵。因为前者包含了非客户区,而后包括了客户区。   


------解决方案--------------------
引用:
ScreenToClient(ChildFunctionRect);//把屏幕的值转成实际的值
ClientToScreen(ChildFunctionRect);//再把值转化为屏幕的值
貌似这样就补偿了误差

这样也成?MFC显示对话框的位置,该怎么解决
------解决方案--------------------
直接使用
BOOL GetWindowRect( 
  HWND hWnd, 
  LPRECT lpRect 
); 
吧,这个获取的是屏幕坐标。