Я хочу центрировать 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 или есть какие-то предпосылки, что япропустил?