我试验了一下:在对话框程序中,单击A对话框里面的一个按钮打开B对话框,在B对话框里面,利用getparent函数可以调用A对话框里面的成员函数,将B对话框里面的一个CSTRING赋给A里面的一个CString,测试通过.
现在我在单文档里面希望实现上述功能,A类是继承CFormView,在A里面一个按钮打开B对话框,也是利用getparent函数调用A里面的成员函数,调试的时候也确实运行到那个函数里面去了,A里面的CString确实被赋值了,但是当B关闭之后,A里面的STRING却变为了NULL,不是我想要的结果,请问为什么对话框中可以实现SDI却不可以那??
该如何实现???
现在我在单文档里面希望实现上述功能,A类是继承CFormView,在A里面一个按钮打开B对话框,也是利用getparent函数调用A里面的成员函数,调试的时候也确实运行到那个函数里面去了,A里面的CString确实被赋值了,但是当B关闭之后,A里面的STRING却变为了NULL,不是我想要的结果,请问为什么对话框中可以实现SDI却不可以那??
该如何实现???
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;
}
建议在Dialog里定义一个View指针,把当前的View传进去,这样一定行:)
dlg.DoModal ();
AfxMessageBox (m_aa);
能说清楚点吗??
不过有办法,你可以把那个string变量设成static的,就可以了
解决的办法很多。
可以把返回类型设置为CString类型的。
楼上说的也是对的。