C++ 使用QT时,mfc对话框仅在鼠标移动后打开
我有一个有趣的问题。我的MFC对话框CManageDlg正在使用此调用调用另一个MFC对话框CmyMfcDlg,只需按一个按钮C++ 使用QT时,mfc对话框仅在鼠标移动后打开,c++,qt,mfc,C++,Qt,Mfc,我有一个有趣的问题。我的MFC对话框CManageDlg正在使用此调用调用另一个MFC对话框CmyMfcDlg,只需按一个按钮 void CManageDlg::OnBnClickedBt() { CmyMfcDlg ipmfc; if ( ipmfc.DoModal() != IDOK ) { return MyError; } } 这是: BOOL CmyMfcDlg ::OnI
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
}
问题是一旦点击,按下点击按钮就会触发,CmyMfcDlg等待,直到移动鼠标才打开!我不知道这两者是如何联系在一起的。我的意思是移动鼠标并打开对话框
编辑1:
事实证明,这个问题只发生在使用QT用户界面时,如果我使用MFC编写的UI调用相同的函数,它可以正常工作,没有问题
编辑2:
我还注意到,只有当您在堆栈模式ipmfc.DoModal上打开对话框时,才会出现此问题,在堆模式下,一切正常 您的第二个对话框在DLL中吗?@AndrewKomiagin两个对话框都在DLL中。这两个都是从.exe调用的,所以我相信它是常规DLL。你为什么不使用MFC扩展库呢?@Andrewkomagin谢谢你的建议。是的,它是普通DLL。不确定MFC扩展库,我会检查它。是的,你应该使用MFC扩展库来处理MFC的东西。这样,您就不需要AFX\u MANAGE\u stateAfxGetStaticModuleEstate;你的信息泵也不会有问题。