我有一个有趣的问题。我的MFC对话框CManageDlg
正在使用此调用调用另一个MFC对话框CmyMfcDlg
,只需按一下按钮
void CManageDlg::OnBnClickedBt()
{
CmyMfcDlg ipmfc;
if ( ipmfc.DoModal() != IDOK )
{
return MyError;
}
}
这是:
BOOL CmyMfcDlg ::OnInitDialog()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDialog::OnInitDialog();
CString tmpStr;
UpdateData(FALSE);
CDC dc;
dc.Attach(::GetDC(this->m_hWnd));
int mx = dc.GetDeviceCaps(HORZRES);
int my = dc.GetDeviceCaps(VERTRES);
// lots of initializations
}
问题是,按一下按钮OnBnClickedBt()
),ON_BN_CLICKED
等即可触发CmyMfcDlg
,直到鼠标移动才会打开!我不知道这两者是如何联系的。我的意思是鼠标移动并打开对话框。
EDIT1: 事实证明这个问题只发生在使用 QT 用户界面时,如果我使用在MFC中编写的UI调用相同的函数,它可以正常工作没有问题!
EDIT2:
我还注意到这个问题只发生在堆栈上的对话框(模态)ipmfc.DoModal()
上,在堆上(无模型)一切都很好!