Hi,
我的CPropertSheet中包括三个页,我想在其中的一个页中访问另一个页中的数据,请问如何访问?
谢谢。robter_X

解决方案 »

  1.   

    class中的成员变量 声明public,直接找到对象后 AAO.m_xx 用。
      

  2.   

    我定义的函数和sheet及page如下:
    void fun1(
    CMyPropertySheet prjset("项目设置");
    CPage1 page1;
    CPage1 page2;
    CPage2 page3;
             prjset.DoModal();
    }
    我想在page2中的OnInitDialog()函数中访问page1中的某一个设置,如何访问?
      

  3.   

    以下代码功能:从第一页设置第二页的数据
    //Page1.cpp
    CPage2 *pPage2;
    pPage2 = (CPage2*)((CPropertySheet*)GetParent())->GetPage(1);
    pPage2->SetDlgItemText(IDC_PAGE2_EDIT1, "hello");
      

  4.   

    (CXXXSheet*)GetParent()获得指针
    可通过该指针再得到页面指针。
      

  5.   

    给你看一个对话框相互访问的例子
    假设父对话框为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
    }
    这样就可以在子对话框不消失的情况下相互传递变量了。