我试验了一下:在对话框程序中,单击A对话框里面的一个按钮打开B对话框,在B对话框里面,利用getparent函数可以调用A对话框里面的成员函数,将B对话框里面的一个CSTRING赋给A里面的一个CString,测试通过.
现在我在单文档里面希望实现上述功能,A类是继承CFormView,在A里面一个按钮打开B对话框,也是利用getparent函数调用A里面的成员函数,调试的时候也确实运行到那个函数里面去了,A里面的CString确实被赋值了,但是当B关闭之后,A里面的STRING却变为了NULL,不是我想要的结果,请问为什么对话框中可以实现SDI却不可以那??
该如何实现???

解决方案 »

  1.   

    to :dropingleaf(叶孤飞云),指点一下嘛
      

  2.   

    A里面的cstring是局部变量还是类成员?
      

  3.   

    to  flyelf(空谷清音):能不能说的清楚一点啊,我现在的代码是:
    void cjuan::OnBnClickedButton1()
    {
        cggg * dlg;
        dlg =  (cggg *)this->GetParent ();
        UpdateData (true);
        dlg->GetStr (m_str); 
    }
    cggg中的GetStr函数是:
    HRESULT cggg::GetStr (CString str)
    {
        m_aa = str;
        return S_OK;
    }
      

  4.   

    这段代码在对话框中是可以用的,拿到SDI中就不可以了
      

  5.   

    把你显示Dialog的代码也贴出来啊!是不是用Domodal显示的?
    建议在Dialog里定义一个View指针,把当前的View传进去,这样一定行:)
      

  6.   

    cjuan  dlg;
        dlg.DoModal ();
        AfxMessageBox (m_aa);
      

  7.   

    to xuzzzhen123(血海飘香):
    能说清楚点吗??
      

  8.   

    因为那个对象不存在了,依附它的变量当然也不存在了。
    不过有办法,你可以把那个string变量设成static的,就可以了
      

  9.   

    camvc(welcome) 说的是对的。
    解决的办法很多。
    可以把返回类型设置为CString类型的。
    楼上说的也是对的。