zoukankan      html  css  js  c++  java
  • MFC模态对话框传值

    如图:
    在单文档菜单栏新建一个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的时候,上一次输入的数值都消失了:

    而我想看到上次输入的数值,怎么做啊?

    解决方法:

    在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-9
    第二章例2-8
    第二章例2-7
    第二章例2-6
    第二章例2-5
    第二章例2-4
    第二章例2-3
    第二章例2-2
    第二章例2-1
    第一章例1-2
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2257426.html
Copyright © 2011-2022 走看看