子窗口中有一下变量
int Wind;
int Rain;
int Fog;
CString FilePath;         现在我想在点击按钮后把以上四个变量传给父窗口,请问怎么办
父窗口是这样调用子窗口的:void CMyRainView::On32788()
{
EnvironmentalSettings01 m_dlg;
    m_dlg.DoModal(); // TODO: 在此添加命令处理程序代码
}
等待高手指点,谢谢!

解决方案 »

  1.   

    将FilePath定义成公有变量.m_dlg.DoModal();
    父窗口变量 = m_dlg.FilePath;
      

  2.   


    if( m_dlg.DoModal()==IDOK)
    {
    父窗口变量 = m_dlg.FilePath; }
      

  3.   

    akirya的方法确实可以,但有没有其它更好的方法,为了传递数据就把它定义为public,好像牺牲大了点吧
      

  4.   

    csdn潜水一两年了,第一次发帖才发现大家这么热心,谢谢大家了
      

  5.   

    那就定义成私有,提供GetFilePath函数不可能再有其他更省事的办法了
      

  6.   

    那假如我父窗口中有一个函数setValue(CString,int,int,int){}
    在子窗口中我按按钮之后怎么调用
    谢谢各位!
      

  7.   

    设置成私有,然后从类中导出一个public接口函数操作它或者采用自定义消息,这样的话代码可能多点,但是不需要加成员函数或是修改成员属性
      

  8.   

    回akirya,子窗口函数父窗口函数我都写好了,就是不知道怎么调用啊
    if(MessageBox("确定应用这些设置吗?","应用设置",MB_OKCANCEL |MB_DEFBUTTON2| MB_ICONSTOP )==IDOK)
    {
    CWnd *wnd=this->GetParent();
                    //走到这不知道怎么调用父窗口中的setValue(,,,,)函数了
    return;
    }
    以下是setValue()函数,高手在指点一下,谢谢 void CMyRainView::setValue(CString f,int a,int b,int c)
    {
    if(f)
    {
    FilePath=f;              
    }
    if(a)
    {
    initWind=true;
    Wind=a;          //fenglidaxiao
    }
    if(b)
    {
    initRain=true;
    Rain=b;
    }
    if(c)
    {
    initFog=true;
    Fog=c;
    }}