在关闭D后,直接回到了C,在C中判断D是否关闭,关闭了的话回到B,以此类推

解决方案 »

  1.   

    在A中DoModal()B,在B中DoModal()C,依次就可以了
      

  2.   

    把每个对话框的指针(CWnd*)存下来,放到一个容器中,用指针控制对话框的关闭和显示。
      

  3.   

    在A时,在A对话框里面初始化时创建B、C、D四个对话框的“非模态”对话框(不知道你为什么要用模态的),1、A->B时,以藏A,显示B;2、B->C时,隐藏B,显示C;3、C->D时,隐藏C,显示D; 4、D->A时,隐藏D,显示A最后注意释放:在A退出整个程序时,在DestroyWindow时,销毁B、C、D
      

  4.   

    在A时,在A对话框里面初始化时创建B、C、D三个对话框的“非模态”对话框作为是对话框A的三个对话框成员,别申明成局部的那种(不知道你为什么要用模态的),1、A->B时,以藏A,显示B;2、B->C时,隐藏B,显示C;3、C->D时,隐藏C,显示D; 4、D->A时,隐藏D,显示A最后注意释放:在A退出整个程序时,在DestroyWindow时,销毁B、C、D 
      

  5.   

    感谢大家的回复!使用模态的是因为流程设计需要,最后使用指针解决了,在A中创建一个全局指针变量P(A类型的),把B,C,D声明为A类的成员对象,P初始化为指向自己对话框对象,后续用P->B.DoModal()依次创建B,C,D,这样一来,P里面保存了所有对话框的指针信息,当D关闭退出(OnConceal())时,使用P-C.EndDialog(1)方式依次销毁C,B,就直接回到A了。
      

  6.   

    不应该用模态吧,你想自由切换还是用非模态好了A->B->C->DD显示的时候 C是阻塞的,B也是阻塞,A也是阻塞关掉D,C不阻塞了,B阻塞,A阻塞,这就是一个包含关系啊...