有两个窗口,窗口A和窗口B,点击窗口A上的一个Button后弹出窗口B,在窗口B里的CEdit输入文字,点击确定,关闭窗口B,再次打窗口B的时候CEDIT没文字了,这个怎么弄?

解决方案 »

  1.   

    变量声明放在A里面,弹出B之前,把这个变量传到B对象中,在B的OnInitialDialog中设置CEdit的text。
      

  2.   

    B退出时把edit内容写在注册表里。B初始化时先读注册表,有内容就显示
      

  3.   

    在A类中定义一个CString成员变量,对B的EDIT中的值最后保存到这个CString中去,改一下B的构造函数,每次创建B类对象时从A类中将要显示的值传进去。
      

  4.   

    取出来是什么意思?
    一般可以这样做,在A类和B类中都各自定义一个CString的成员变量,将你所谓取出来的值给B类的CString变量,由这个变量将值带给A类。然后改一下B类的构造函数,多加一个参数,用来传你保存的这个值。
    当然如果你嫌麻烦,也可以设一个全局的CString变量来保存,那就方便多了。
      

  5.   

    你的意思我明白了,获取CEDIT的值是没问题,我就是不知道怎么才能把获取出来的这个值又重新显示到CEDIT这个控件上去。
      

  6.   

    SetDlgItemText之类的API都可以啊
      

  7.   

    ((CEdit *)GetDlgItem(ID_EDIT))->SetText(str);  //ID_EDIT:你的CEdit控件的ID  str:你保存的CString 值
      

  8.   

    错了,是:
    ((CEdit *)GetDlgItem(ID_EDIT))->SetWindowText(str); //ID_EDIT:你的CEdit控件的ID str:你保存的CString 值
      

  9.   

    最规范的MFC的方法是在B的类里面给那个CEdit绑定一个CString对象,比如m_strData,把这个B类的成员声明成public的。
    这样在创建B后,在DoModal之前直接给这个dlgB.m_strData赋值就可以了。b对话框返回以后你只要不销毁b的对象,比如之前用new创建b,重新DoModal后,Edit里的值还在。不需要额外保存。
      

  10.   

    ((CEdit *)GetDlgItem(IDC_EDIT1))->SetWindowText("HELLO");
    这样写后,还是没有呀,
      

  11.   

    ((CEdit *)GetDlgItem(IDC_EDIT1))->SetWindowText("HELLO");
    ==========
    这段代码写在什么地方了啊?