建了一个单文档MFC工程
在主菜单中添加了一个按钮,弹出一个新的窗口,在窗口的Edit button中输入一些值。这时在关闭窗口时,如何能将输入的值传回给主菜单类,供其他函数使用。谢谢!

解决方案 »

  1.   

    在主菜单类中设一个成员变量,比如为char m_szText[32];
    假设消息响应为: 
    void CYouMenu::OnMenuItem1()
    {
      CXXDlg dlg;
      if(dlg.domodal() == IDOK)
    {
      m_szText = dlg.GetText();
    }
    }在CXXDlg中定义GetText()
    返回其中其成值
      

  2.   

    按你说的,我在CMainFrame类中定义了一个CString变量src。在响应函数中添加了以下代码:
            CDlg Set;
    if(Set.DoModal() == IDOK)
    {
    Set.GetDlgItemText(IDC_EDIT1,src);

    }但是运行到Set.GetDlgItemText(IDC_EDIT1,src);语句时,挂了。
      

  3.   

    我觉得应该是在判断Set.DoModal() == IDOK后,窗口已经关闭,Set已经不存在,Set.GetDlgItemText(IDC_EDIT1,src);
    不能运行了
      

  4.   

    对!
    可以在CDlg类中定义一个成员变量,保存IDC_EDIT1的值,Set.DoModal() 后依然可以访问;
    不过,要在对话框中写代码,先取出这个值,放入成员变量中。
      

  5.   


    你怎么能加到这里呢,GetDlgItemText(IDC_EDIT1,src)应该在你的那个对话框类之中.
      

  6.   


    在点击IDOK之后,窗口dlg就关闭了,释放dlg的资源,为什么还能调用dlg.GetText();函数?
      

  7.   

    添加OK的消息响应:
    void CTEXTDlg::OnOK() 
    {

    GetDlgItemText(IDC_EDIT1,src); 
            //需要为这个类添加CString src;

    CDialog::OnOK();
    }
    菜单中添加:void CMainFrame::OnCsdnText() 
    {CTEXTDlg Set; 
    if(Set.DoModal() == IDOK) 

    src=Set.src;
            MessageBox(src);
    }
    }
    这样就可以了。
      

  8.   

    窗口关闭了,但是 Set这个CDlg对象还在. 所以可以访问CDlg的成员.但是CDlg的m_hWnd成员已经无效了