有三个类,A B C
对应三个对话框D_A,D_B,D_CD_A是主对话框,D_B是选择界面,D_C是运行界面简而言之呢,就是通过D_A弹出D_B进行选择,再通过D_B弹出D_C运行并隐藏了D_B
运行后要返回D_B进行选择,要如何显示隐藏的D_B?三个类的关系是A{
  B* B
}B{
  C* C
}网上很多方法都试过了,基本上是说找到D_B的句柄showwindow,可是就是找不到,没用啊那些方法
GetParent()找到的是A
Finwindow()找不到

解决方案 »

  1.   

    你累不累啊,还FindWindow。把D_B窗口实例对象作为成员变量记录下来,并在变量传递给D_C,可以在D_C中定义D_B的指针类型。D_C结束后,调用改变量的ShowWindow就行了
      

  2.   

    FindWindow需要有唯一窗口标题或者类名
    可以自己保存各个对话框的对象等,然后获取到句柄来ShowWindow控制
      

  3.   

    D_B不是你控制的,如果是你控制的,你记录它的窗口句柄,需要的时候再SHOW不就行了。如果不是你控制的,那就用窗口遍历,遍历当前的所有顶层窗口,通过窗口标题找到该窗口,然后show。或者hook窗口消息
      

  4.   

    保有一个句柄就可以用ShowWindow来控制了
      

  5.   

    1#说的很对,Findwindow太麻烦了。
      

  6.   


    老师说的是,D_B是一个实例化对象啊,是在类A里new,create出的,怎么传递啊?而且D_C是类B里new,create出的一个对象,C应该是建立不了B对象的吧?这个指针如何定义啊?如何传递啊?
      

  7.   

    A是一个Modal,B和C是一个NoModal
    在B中new 和 create C之后,C->SaveB(B);显示B时,B->ShowWindow(SW_SHOW);
    C中保存B的m_hWnd或者B指针都行。
      

  8.   

    隐藏的话就用showwindow(sw_hide);
      

  9.   


    我在C里保存了B的hWnd,但是没法再C中定义B类型的指针,不过总算成功了,谢谢啦
      

  10.   


    不过我还是想知道,怎样在C中定义B类型的指针呢?C是在B中new出来的,因为C中定义B* B的时候添加了B的头文件,C连B的头文件都加不了,怎么定义B类型的指针啊?
      

  11.   

    前向声明:
    在C头文件开始地方
    class B;
    在C类h中
    private:
      B* b;  //前向声明后只能定义指针
    在C类的cpp中
    #include "B.h"
    然后就可以通过b使用B类的方法了
      

  12.   

    new的时候保存到一个成员变量指针
      

  13.   

    你在弹出D_C之前把D_B的窗口句柄传过去,结束是直接传这个句柄掉ShowWindow函数啊
      

  14.   

    妈呀,看着好累,你可以在D_C中申明D_B的指针对象,然后在其构造函数的时候传递进去保存,这样你就可以随时控制D_B的显示与隐藏了啊
      

  15.   

    A{
      B* B
    }B{
      C* C
    }A的主对话框的某个函数里(这个函数是响应b现实或者隐藏的)b.showwindow在a的onitialdialog里面创建b  就好了!