想在一个类A中调用另一个B对话框,做成非模态。我的方法如下:
  在A的定义中,B* b;
  在A的调用中,
   b = new B();
   b->Create(B::IDD);
   b->ShowWindow(SW_SHOW)
  结果,Create有时成功,有时失败,何解?
   
  

解决方案 »

  1.   

    debug into create, and see what error occurs.
      

  2.   

    b->Create(B::IDD);
    改为
      b->Create(IDD_DIALOG);//IDD_DIALOG为对话框B的id号
      

  3.   

    改为b->Create(IDD_DIALOG);//IDD_DIALOG为对话框B的id号
    也没有用,
    原因是B::OnInitDialog()有时执行,有时不执行,但不知道是何故
      

  4.   

    做法似乎不妥:
    在B中,应有一个A*变量,如A* pA;否则无模式对话框无法向A发消息。B::B(A* pParent)
    {
      pA = pParent;
    }BOOL B::Create()//此函数不是虚函数
    {
      Return CDialog::Create(B::IDD);
    }
    然后:
       b = new B(this);
       if(b->Create())
          b->ShowWindow(SW_SHOW)
      
      

  5.   

    不考虑其它问题;
    b->Create(B::IDD);应改成CDialog::Create(B::IDD);个人看法,试试如何?
      

  6.   


    CWenrol2 dlg=new CWenrol2;
    dlg->Create(IDD_DIALOG_WENROL2,this);
    dlg->ShowWindow(SW_HIDE);
      

  7.   

    CWenrol2 *dlg=new CWenrol2;
    dlg->Create(IDD_DIALOG_WENROL2,this);
    dlg->ShowWindow(SW_HIDE);