1.在Cdiedaijisuan的头文件中定义一个主对话框指针void *m_pMainDlg;
2.CSurfaceDlg中弹出Cdiedaijisuan窗口的函数中增加m_dlg.m_pMainDlg = (void*)this;
3.OnOk()函数修改如下void Cdiedaijisuan::OnOk()
{
      ((CSurfaceDlg*)m_pMainDlg)->m_shuchu.SetWindowText("你好");
}

解决方案 »

  1.   

    void Cdiedaijisuan::OnOk()
    {
          }
    不能这么写,应该这么写:
    在Surface菜单的消息函数里这么写:
    子窗口类名 n;//就象CSurfaceDlg 
    if(n.DoModal()==IDOK)
    {
          m_shuchu=n.子窗口的控件比如EDIT的值;
    UpdateData();}
    用SDI也可以,而且更好,但SDI的视图应该CFormView,而不能是默认的CView类
      

  2.   


    那个m_dlg是什么呢?显示他是没有定义的啊,他是在哪里定义的呢?
      

  3.   


    那个m_dlg是什么呢?显示他是没有定义的啊,他是在哪里定义的呢?
    m_dlg是CSurfaceDlg中定义的Cdiedaijisuan类型的成员变量,弹出Cdiedaijisuan窗口用的那个就是
      

  4.   


    那个m_dlg是什么呢?显示他是没有定义的啊,他是在哪里定义的呢?
    m_dlg是CSurfaceDlg中定义的Cdiedaijisuan类型的成员变量,弹出Cdiedaijisuan窗口用的那个就是
    不好意思,那个还是有问题。我直接上图吧,麻烦您看下吧,我是按照您指导的步骤来的。
    编译之后提示,
    Compiling...
    diedaijisuan.cpp
    F:\Surface\diedaijisuan.cpp(52) : error C2039: 'OnOk' : is not a member of 'Cdiedaijisuan'
            f:\surface\diedaijisuan.h(14) : see declaration of 'Cdiedaijisuan'
    F:\Surface\diedaijisuan.cpp(54) : error C2065: 'CSurfaceDlg' : undeclared identifier
    F:\Surface\diedaijisuan.cpp(54) : error C2059: syntax error : ')'
    执行 cl.exe 时出错.Surface.exe - 1 error(s), 0 warning(s)
      

  5.   

    Ondiedaijisuan()函数里面第一行改为dlg->m_pMainDlg = (void*)this;
    diedaijisuan.h里面包含头文件
    #include"SurfaceDlg.h"
      

  6.   


    应该是m_dlg->m_pMainDlg = (void*)this;
    但是编译还是出现相同的问题啊
      

  7.   


    应该是m_dlg->m_pMainDlg = (void*)this;
    但是编译还是出现相同的问题啊dlg在哪定义的
      

  8.   


    应该是m_dlg->m_pMainDlg = (void*)this;
    但是编译还是出现相同的问题啊dlg在哪定义的你刚才告诉我应该在SurfaceDlg中定义的Cdiedaijisuan变量吧?
      

  9.   

    。。既然有了成员变量,就不用那个指针了,Ondiedaijisuan()里面改为
    m_dlg.m_pMainDlg = (void*)this;
    m_dlg.Create(IDD_diedaijisuan,this);
    m_dlg.ShowWindow(SW_SHOW);
      

  10.   

    请问下您,我现在是用的CFromView类,但是输出的话,应该如何处理呢?用sd__q给出的方法不行,您知道还有什么方法吗?