我定义了一个全局的float变量xx
有定义了一个对话框上的EDIT控件关联的一个变量m_editx;
我在程序中写了
UpdateData(TRUE);
CDiagoseDlg dlg;xx=dlg.m_x;
但是结果是无法将dlg.m_x的值传递给全局变量xx。想问各位怎么解决,为什么这样~

解决方案 »

  1.   

    可不可以这样
    把 xx地址 作为CDiagoseDlg构造函数的参数,传指针进去
    构造函数中 m_x地址 = xx地址
    对话框中处理 m_x 就相当于处理 xx 了 
      

  2.   

    CDiagoseDlg dlg;
    你定义了一个临时对话框,然后xx=dlg.m_x; 
    把临时对话框的那个值传过去了?
    那个dlg你是输入数据的那个对话框么?
      

  3.   

    xxx=dlg.m_x在哪写得啊?domodal后? 那时候dlg都释放了(没有析构),对象已经无效了。。当然获取失败了。。 domodal是个阻塞的函数,知道你执行了CDIALOG::ONOK()后才结束。解决:在dlg的消息响应函数中去做。
      

  4.   

    我的是基于对话框的~
    其构造函数是~
    CDiagoseDlg::CDiagoseDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CDiagoseDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CDiagoseDlg)
    m_x = 0.0f;
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    不知道能不能加个你所说的参数~
      

  5.   

    嗯嗯,我写的是基于对话框的~消息响应函数就是
    void CDiagoseDlg::OnOK() 
    {
    // TODO: Add extra validation here
    UpdateData(TRUE);
    CDiagoseDlg dlg;
    CString   str;   
      str.Format("%f",dllGlobalVar1);   
      MessageBox(str);   xx=dlg.m_x;
    dllGlobalVar1=xx; str.Format("%f",dllGlobalVar1);   
      MessageBox(str); 
         
    CDialog::OnOK();
    }
      

  6.   

    dlg就是我输入数据的那个对话框 
    ,我写的是基于对话框的~消息响应函数就是 
    void CDiagoseDlg::OnOK() 

    // TODO: Add extra validation here 
    UpdateData(TRUE); 
    CDiagoseDlg dlg; 
    CString  str;  
      str.Format("%f",dllGlobalVar1);  
      MessageBox(str);  xx=dlg.m_x; 
    dllGlobalVar1=xx; str.Format("%f",dllGlobalVar1);  
      MessageBox(str); 
        
    CDialog::OnOK(); 
    }
      

  7.   

    给你个例子:dlg1为子对话框
    成员变量 float *m_x;
    dlg1::dlg1(subani *sub)
    : CDialog(IDD_DLG1, NULL)
    {
    m_x = &xxx;
    }
    然后做处理就可以了你试一下吧,我没用过float类型的,都是用类成员的指针
      

  8.   

    你所说的子对话框是指基于单文档的吗?是不是单击菜单上的按钮就弹出一个对话框,这个对话框就是你所说的子对话框~
    ————————————————————————————————————继承CDialog的肯定是基于对话框的吧,就是用 DoModal()弹出的那种
      

  9.   

    你的成员变量 float *m_x; 是不是和Edit控件相关联~
      

  10.   

    我一般不会做关联,因为我用的盗版VS有时候会抽风,添加变量的地方灰掉
    如果我要获得Edit控件的输入值一般会直接GetWindowText
      

  11.   

    m_editx的类型是float型吗?如果是,你的OnOK()可以这样写:
    void CDiagoseDlg::OnOK() 

    // TODO: Add extra validation here 
    UpdateData(TRUE); 
    CString  str;  
      str.Format("%f",dllGlobalVar1);  
      MessageBox(str);  xx=m_x; 
    dllGlobalVar1=xx; str.Format("%f",dllGlobalVar1);  
      MessageBox(str); 
      
    CDialog::OnOK(); 
    }看起来dllGlobalVar1与xx应该是一样的,xx可以去掉,直接写dllGlobalVar1 = m_x;就可以了