如图:
在单文档菜单栏新建一个ADD菜单项然后对这个ADD创建num_add类,并创建事件,点击出现对话框:
void CDocement1Doc::On_ADD() 
{
// TODO: Add your command handler code here
num_add dlg1;
dlg1.DoModal();
}
输入之后,计算sum,并点击OK键创建事件:
void num_add::OnOK() 
{
// TODO: Add extra validation here
UpdateData(TRUE);
m_sum = m_a + m_b;
UpdateData(FALSE);
CDialog::OnOK();
}问题是:一旦我下次再点击ADD的时候,上一次输入的数值都消失了:而我想看到上次输入的数值,怎么做啊?

解决方案 »

  1.   


    我也是初学者啊..写的乱七八糟的.刚才弄了一下我在App类里面添加了3个变量和两个函数. int m_save1;
    int m_save2;
    int m_save3; void SaveData(int x,int y,int z) //将编辑框控件值保存
    {
    m_save1 = x;
    m_save2 = y;
    m_save3 = z;
    } void ReadData(int& x,int& y,int& z)//把值赋予编辑框控件
    {
    x = m_save1 ;
    y = m_save2;
    z = m_save3;
    }然后在响应对话框那里
    CMyDlg mydlg;
    theApp.ReadData(mydlg.m_num1,mydlg.m_num2,mydlg.m_num3);
    mydlg.DoModal();
    theApp.SaveData(mydlg.m_num1,mydlg.m_num2,mydlg.m_num3);
    等于说是创建对话框对象.
    然后把保存过的三个数赋予对话框控件所关联的三个数然后你操作完以后再保存到那三个变量里去相加的按钮还是一样的 UpdateData(true);
    m_num3 = m_num1+m_num2;
    UpdateData();
      

  2.   

    局部变量,一结束就会析构。
    这样写:
    void CDocement1Doc::On_ADD() 
    {
        // TODO: Add your command handler code here
       static num_add dlg1;//定义成静态的。
        dlg1.DoModal();
    }
    给对话框加一个OnInitDialog函数,加一句:UpdateData(TRUE);就行了。
      

  3.   

    void num_add::OnOK() 
    {
        // TODO: Add extra validation here
        UpdateData(TRUE);
        m_sum = m_a + m_b;
        UpdateData(FALSE);
        CDialog::OnOK();
    }你的代码这样写的 每次关闭对话框后,对话框就没有了,再次生成对话框时,又重新初始化,对话框重新显示0 而不是你上输入的值。为了让你上次输入的值存在,就要把你输入的值重新保存到一个变量里面,然后每次用这个变量来初始化你的对话框的编辑框的值
      

  4.   

    那这样的话你是说需要用静态变量吧,但是我添加之后一直出现:
    rror LNK2001: unresolved external symbol "public: static float CPublic::all_texture" (?all_texture@CPublic@@2MA)
    之类的错误啊
      

  5.   

    大神,你加那个“static”是不是表明实例化一个静态类对象呀?麻烦你讲一下吧,菜鸟一只,望多多指教!