读书人

DoModal()报错解决办法

发布时间: 2012-05-01 12:48:58 作者: rapoo

DoModal()报错
在CMyQQClientApp的InitInstance()里面添加了这部分代码,但是在loginDlg.DoModal()处出错
跟进去之后,在这句VERIFY(RunModalLoop(dwFlags) == m_nModalResult);处出现了错误,求指导!

C/C++ code
    CRegisterDlg regDlg ;    CLoginDlg    loginDlg ;    CMyQQClientDlg clientDlg;[color=#FF0000]    [size=14px]loginDlg.DoModal() ;[/size][/color]    if (loginDlg.nResponse == 1)    {        clientDlg.m_IsRegister = 0 ;        clientDlg.m_userInfo.m_infoID = loginDlg.m_iID ;        clientDlg.m_userInfo.m_infoPSW = loginDlg.m_iPSW ;    }    else if (loginDlg.nResponse == 2)    {        if (regDlg.DoModal() == IDOK)    //打开注册对话框        {            clientDlg.m_IsRegister = 1 ;            //注册信息            sprintf (clientDlg.m_userInfo.m_infoNick, "%s",                regDlg.m_strNickName.GetBuffer(64)) ;            sprintf(clientDlg.m_userInfo.m_infoName, "%s",                regDlg.m_strFullName.GetBuffer(64)) ;            clientDlg.m_userInfo.m_infoPSW = regDlg.m_iPsw ;            clientDlg.m_userInfo.m_infoSex = regDlg.m_iSex ;            clientDlg.m_userInfo.m_infoAge = regDlg.m_iAge ;            clientDlg.m_userInfo.m_infoPicture = regDlg.m_iPicture ;        }        else            return FALSE ;    }    else        return FALSE ;    m_pMainWnd = &clientDlg ;    //打开主对话框窗口    int nResponse = clientDlg.DoModal () ;    if (nResponse == IDOK)    {    }    else if (nResponse == IDCANCEL)    {    }


[解决办法]
进clientDlg 的OnInitDialog函数中看看对话框初始化什么地方出错了
[解决办法]
对话框风格是不是设置的弹出窗口???
[解决办法]
loginDlg构造出错,
调试以下就知道了
[解决办法]
看这提示是返回的值不是MFC规定的范围内,你是不是自己定义了返回的值,如果是,最好把你想要返回的值送到一个变量里,这样在DoModal后,就可以用login.m_Result来取得你想要的值

读书人网 >VC/MFC

热点推荐