[MFC]DoDataExchange的对话框数据交换和检验

本文详细介绍了MFC中DoDataExchange函数和CDataExchange类的作用,以及DDX和DDV系列函数在对话框数据交换和检验中的应用。通过DDX函数可以方便地实现不同类型数据成员与控件之间的交换,而DDV函数则用于进行数据校验,确保用户输入的数据符合预设范围或长度限制。同时强调了DDX和DDV的顺序以及在OnInitDialog和OnOK等函数中调用基类函数的重要性。
摘要由CSDN通过智能技术生成

1. 对话框里控件上的数据应该如何保存?

    1) 一般需要在CDialog的派生类中定义一些数据成员用来保存控件中用户输入的数据;

    2) 那么最大的问题就是如何让这些定义的数据成员和控件中的数据进行及时的交流——使用SetDlgItemText和GetDlgItemText两个函数即可:

         i. 在OnInitDialog中使用SetDlgItemText将数据成员作为初始值来初始化控件,前提是要对数据成员先进行初始化;

         ii. 在OnOK、OnCancel等退出按钮的处理函数中使用GetDlgItemText将控件中的数据回写到相应的数据成员中;

         iii. 例如:SetDlgItemText(IDC_NAME, m_strName)、GetDlgItemText(IDC_NAME, m_strName);

!第一个参数是目标控件的ID,第二个是数据成员,用于和控件交换数据;

    3) 以上交换数据的缺陷:

         i. 数据类型限制较大:只能交换字符串型的数据,有时候用数值类型保存更加方便;

         ii. 数据正确与否无法检验:用户输入的数据是否合理(超出规定范围等)不能自动检验,如果数据多,则需要使用大量的语句进行校验,效率低下;

    4) MFC给出的解决方案:在CDialog的虚函数DoDataExchange中使用DXX函数和DDV函数分别进行数据交换和数据校验即可,非常方便,无需在OnInitDialog和退出按钮函数中调用Set和Get函数,即可自动进行交换(数据的流动方向也可以自动判断)和校验;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值