新建了一个对话框工程GlooxIM(对话框类为CGlooxIMDlg),在对话框上添加了几个Edit Control控件,并各自为它们添加了一个CString类型的Value变量,比如一个CString类型的str。并在CGlooxIMDlg.cpp声明一个CGlooxIMDlg Dlg变量。在工程中添加一个类abc(无基类),包含相应的头文件后,在abc.cpp的开头儿加入extern CGlooxIMDlg Dlg;abc类中有个函数void start();其中就需要调用CGlooxIMDlg类中的str变量,形式为Dlg.strvoid CGlooxIMDlg::OnBnClickedOk()
{
    UpdateData(TRUE);
    GetDlgItemText(IDC_EDIT_Str,str1)//str1是在CGlooxIMDlg.h中声明的一个public的全局CString变量
    abc *p = new abc();
    p->start();
    delete p;
}
跟踪进入start()函数中,发现str和str1都为空!望大虾指教

解决方案 »

  1.   

    你只是声明了对象指针,new 了内存空间,但对类的变量没有赋值
      

  2.   

    updatedata和GetDlgItemText俺没一起用过。
      

  3.   

    这里只是想测试updatedata和GetDlgItemText是否都可以取到Edit Control控件中的值试验证明是可以的,上述代码中UpdateData(TRUE);
    GetDlgItemText(IDC_EDIT_Str,str1)//str1是在CGlooxIMDlg.h中声明的一个public的全局CString变量执行后str和str1都可以得到Edit Control控件中的值,但是进入p->start();之后,它们就都为空了
      

  4.   

    Dlg.str你又没给这个赋值,自然是空的,这里的Dlg和对话框窗口对象是2个不同的对象
      

  5.   

    "  abc *p = new abc();
        p->start();
        delete p;    "你只是申请了一个内存空间,并没有赋值给指针p,也就是说没有实例化,所以里面什么都没有,自然都为空啦~
      

  6.   

    类中并无什么变量需要实例化,就是只有几个void型的函数,也没有参数,只是在函数体当中需要用到对话框类中的几个变量而已