我首先建立了一个基于对话框的MFC工程,作为主对话框。然后添加了几个对话框资源,并分别创建了对话框类,这几个对话框时作为子对话框用的。在主对话框里创建了这几个类的对象,然后在主对话框初始化的时候Create了几个子对话框。
    
    我的问题是:我如何在这几个子对话框之间传输数据?
    我想我是不是可以先直接获得父对话框类的指针,然后可以获得创建的对话框的对象,这样就可以把数据传过去了!
    代码怎么写?
  高手指教!

解决方案 »

  1.   

    在主对话框类中 声明子对话框的指针
    CSubDlg1 m_dlg1;
    CSubDlg2 m_dlg2;
    在主对话框OnInitDialog()中new这两个对话框对象,创建非模态对话框。
    这样在任何子对话框中都可以获得父指针,然后获得任何对话框的指针了。
      

  2.   


    可能我没说清楚,不好意思,我更想直接获得其他子对话框的类对象!
     
     还有你说非模态对话框可以发送消息。我是想,发送消息也得获得其他子对话框的句柄吧!GetDlgItem就可以?
      

  3.   

    在子对话框m_dlg2中包函主对话框头文件,((CParent*)GetParent())->m_dlg1.fun();
      

  4.   

    可以先直接获得父对话框类的指针,因为各个子对话框的指针对象都定义为父对话框的成员变量,只要是public类型的,都可以直接访问。
      

  5.   

    使用CWnd* GetParent( ) 获取父对话框指针。通过父对话框指针去调用各个子对话框指针,实现不同对话框之间的数据传输。 
      

  6.   

    在Dlg2文件里写Dlg1 dlg.SendMessage(命令消息,数据,数据);
      

  7.   

    你也不说你的父类是什么,现在假定你的父类是CParentDlg;
    CParentDlg *pDlg = (CParentDlg *)AfxGetMainWindow();
    pDlg->m_dlg1;
    pDlg->m_dlg2;
      

  8.   


    纠正一点小问题,你没拼写正确,应该是AfxGetMainWnd()。很感谢!