C++ 使用QT时,mfc对话框仅在鼠标移动后打开

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

我有一个有趣的问题。我的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 
}
问题是一旦点击,按下点击按钮就会触发,CmyMfcDlg等待,直到移动鼠标才打开!我不知道这两者是如何联系在一起的。我的意思是移动鼠标并打开对话框

编辑1: 事实证明,这个问题只发生在使用QT用户界面时,如果我使用MFC编写的UI调用相同的函数,它可以正常工作,没有问题

编辑2:
我还注意到,只有当您在堆栈模式ipmfc.DoModal上打开对话框时,才会出现此问题,在堆模式下,一切正常

您的第二个对话框在DLL中吗?@AndrewKomiagin两个对话框都在DLL中。这两个都是从.exe调用的,所以我相信它是常规DLL。你为什么不使用MFC扩展库呢?@Andrewkomagin谢谢你的建议。是的,它是普通DLL。不确定MFC扩展库,我会检查它。是的,你应该使用MFC扩展库来处理MFC的东西。这样,您就不需要AFX\u MANAGE\u stateAfxGetStaticModuleEstate;你的信息泵也不会有问题。