我想将CMyDialog
相对于CView
居中。
我在CMyDialog::OnInitDialog()
内使用CenterWindow(m_pParentWnd);
进行此操作
但是它不能按预期工作,位置错误。 (太多了
太正确了
我必须对原始的CenterWindow(CWnd* pAlternateOwner)
进行如下修正:
///////////////////////////////////////////////////////////////////////
// Centering dialog support (works for any non-child window)
//void CWnd::CenterWindow(CWnd* pAlternateOwner)
void CMyDlg::CenterWindow(CWnd* pAlternateOwner)
{
..
..
// find dialog's upper left based on rcCenter
//int xLeft = (rcCenter.left + rcCenter.right) / 2 - rcDlg.Width() / 2; // wrong
//int yTop = (rcCenter.top + rcCenter.bottom) / 2 - rcDlg.Height() / 2; // wrong
int xLeft = (rcCenter.right - rcCenter.left) / 2 - rcDlg.Width() / 2; // right
int yTop = (rcCenter.bottom - rcCenter.top) / 2 - rcDlg.Height() / 2; // right
..
..
}
是MFC计算错误还是缺少某些先决条件?