相对于CView将对话框居中

时间:2019-06-25 11:08:37

标签: c++ mfc

我想将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计算错误还是缺少某些先决条件?

0 个答案:

没有答案