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();
    

      这样就搞定了,不过感觉有点麻烦啊,呵呵!

  • 相关阅读:
    hihocoder_offer收割编程练习赛53_2hiho字符串3
    hihocoder_offer收割编程练习赛53_1继承顺位
    网易招聘笔试题--牛牛的背包问题
    EJB3.0快速入门
    MyEclipse的常用快捷操作----非常实用!!!
    Spring2.5零散笔记
    Hibernate零散笔记
    一个问题引发的OOA&OOD讨论.
    如何使用JUnit进行单元测试
    Log4j自学笔记
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2257426.html
Copyright © 2011-2022 走看看