CTestDialog frontDlg;
m_pMainWnd = &frontDlg;
frontDlg.DoModal();
CtestDlg dlg;
m_pMainWnd = &dlg;   
INT_PTR nResponse = dlg.DoModal();//这个DoModal立即返回,是啥原因?我两次初始化了m_pMainWnd,是因为我想在对话框上创建子对话框。不复制无法正确创建子对话框。

解决方案 »

  1.   

    返回的是什么?
    可能你的CtestDlg类有问题 (比如有些未使用得控件或activex控件没被删除)
    DoModal初始化错误
      

  2.   

     The return value is –1 if the function could not create the dialog box, or IDABORT if some other error occurred, in which case the Output window will contain error information from GetLastError.
      

  3.   

    返回的是-1。我在第一个对话框上(CTestDialog )增加了一个 cdhtmldialog用来显示一个网页。如果没有m_pMainWnd = &frontDlg; 那么网页无法显示。
    我的目的是一开始显示一个欢迎界面(CTestDialog ),结束后显示主界面(CtestDlg )
      

  4.   

    m_pMainWnd是你工程中的主对话框指针吧。应该只有唯一的对话框作为对话框吧。第二个DOmal估计压根就没成功,所以直接返回了
      

  5.   

    DoModal在返回前会调用DestroyWindow,因为你当前的窗口是主窗口,所以会post个WM_QUIT消息,你第二次调用Domodal,因为消息队列中有个WM_QUIT消息,所以肯定是立即返回了!所以你不要把主窗口设置为frontDlg!
      

  6.   

       hxzmm :  我现在不得不把主窗口设置为frontDlg,否则的话我无法在frontDlg上显示一个cdhtmldialog的网页界面。我用了GetMessage,好像去不掉那个 WM_QUIT消息啊?
      

  7.   

    显示网页界面一定要当前窗口是主窗口么?
    去掉WM_QUIT用PeekMessage(&msg, INVALID_HANDLE_VALUE, WM_QUIT, WM_QUIT, PM_REMOVE)试试看行不行!
      

  8.   

    显示网页界面一定要当前窗口是主窗口么?
    去掉WM_QUIT用PeekMessage(&msg, INVALID_HANDLE_VALUE, WM_QUIT, WM_QUIT, PM_REMOVE)试试看行不行!
      

  9.   

    已经解决了,在创建完cdhtmldialog之后,把m_pMainWnd=null。谢谢hxzmm !
      

  10.   

    to  hxzmm 
    我是mfc新手啊,不设置成主窗口, Navigate的时候出错!!!!不知道什么原因,估计是跟消息循环有关系把
    CAdvertise * adDlg = new CAdvertise(this);
    adDlg->Create(IDD_DIALOG1);
    adDlg->Navigate(_T("www.uuyx.com"));//出错
    adDlg->ShowWindow(SW_SHOW);