我用VC写界面程序时,见了几个对话框,一个里面定义了一个PUBLIC变量数组,然后我要用另外的对话框去访问这个数组,如何实现啊????
当我在一个对话框1里调用另一个对话框2,然后,想让对话框2调用对话框1里的变量的值如何调用??使用GetWindow()函数为什么不行啊??
求各位大侠帮忙!!急急!!
解决马上送分!!!
谢谢

解决方案 »

  1.   

    两个个对话框中变量值的传递
    假设父对话框为CFatherDlg;
    子对话框为CSonDlg,其为CFatherDlg的成员变量; 
    在CFatherDlg中的变量有:
    public:
         int m_nValue;
         CSonDlg m_SonDlg;
    在CSonDlg中的变量有:
    public:
        int m_nValue;
        CButton m_btnTansfer;//传递m_nValue到父对话框的m_nValue;为按钮m_btnTansfer添加消息响应函数:
    void CSonDlg::OnButtonTransfer() 
    {
        // TODO: Add your control notification handler code here    
            UpdateData(TRUE);//根据需要,是否有需要更新的控件变量
            m_nValue=100;//如果m_nValue不是控件变量;
            ((CFatherDlg*)(CDialog*)GetParent())->m_nValue=m_nValue;
    ////////注意这里要强制转换两次!!!
    //1:还可以利用这个方法直接给CFatherDlg中的控件赋值
    //((CFatherDlg*)(CDialog*)GetParent())->SetDlgItemInt(IDC_EDIT_VALUE,m_nValue);
    //2:直接从父对话框中获得变量,传到子对话框
    //((CFatherDlg*)(CDialog*)GetParent())->GetDlgItem(IDC_EDIT_VALUE)->GetWindowText(m_strValue);m_strValue是CSonDlg的成员变量;可以直接看到变化;
    //m_nYear=((CFatherDlg*)(CDialog*)GetParent())->m_nValue
    }参考http://blog.csdn.net/happyparrot/archive/2004/06/07/21589.aspx
      

  2.   

    GetParent即可,不过创建对话框2时要把对话框1作为父亲
      

  3.   

    最简单,有效方法就是在对话框2定义一个数组变量用来保存对话框1中的值
    或就定义一个指针变量指向对话框1中的数组(这个变量也是public), 
    当对话框1调用对话框2时, 把对话框2的这个变量赋值。
      

  4.   

    CWnd *p=GetParent();//得到TREECTRL的父窗口TABCTRL
    p=p->GetParent();//得到对话框2的窗口
        CWorkspaceBar*pp;
    pp=(CWorkspaceBar *)p->GetParent();
    int nnn=pp->GeoCharacterSet.GetSize();
    我在第二个对话框的TABCTRL里的树控件下调用窗口CWorkspaceBar里的ARRAY:GeoCharacterSet,为什么得到的GetSize()的值是0;
      

  5.   

    方法一:建立父子对话框;
    方法二:在 CxxxApp 中建立全部变量:CxxxApp the App; 将数组放在CxxxApp中,那么其它类就可以共同使用了。
      

  6.   

    教你一个简单方法,修改DIALOG1的构造函数,比如
    CTestDlg::CTestDlg(CTestDlg2* aa)
    {
         m_TestDlg2 = aa;
    }
    在CTestDlg 中添加成员变量 CTestDlg2 *m_TestDlg2,
    然后你就可以访问CTestDlg2中的变量或叔祖了