使用QT后鼠标移动后,mfc对话框才会打开

时间:2015-04-20 18:41:47

标签: c++ qt mfc

我有一个有趣的问题。我的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()上,在堆上(无模型)一切都很好!

0 个答案:

没有答案