MFC控件关联变量

一.控件变量的分类
控件变量分为值变量控件类的变量;
①值变量:与控件关联的数据变量,可以为任何MFC基本数据类型,在控件变量之间有两种数据的传递方式:控件传递给变量(表征为向控件输入数值改变与之关联的变量的值),和变量传递给控件(表征为刷新后控件中的数值发生变化
②控件类的变量:控件类的对象,方便对控件本身进行操作,比如设置焦点,显示隐藏控件本身等,代替GetDlgItem()函数;
二.控件与其相关联的变量之间的值传递
1.传递方式
①控件传递给变量:
通过修改控件框中的数值,来改变与控件关联变量的数值;
②变量传递给控件:
通过修改变量的值来改变控件框的显示;
2.数据交换和检验
现在我们来思考当控件框值和与之关联的变量有一方发生改变时,是谁监测检验执行数据的交换呢?在MFC中有这样两个函数
DoDataExchange(); //执行数据交换
UpdateData(); //监测检验

DoDataExchange()来执行数据的交换,这个函数是MFC自动生成的函数,只要有关联变量,MFC就会在次函数中自动添加关联语句;
void CAdditionDlg::DoDataExchange(CDataExchange* pDX)   
{   
    // 处理MFC默认的数据交换   
    CDialogEx::DoDataExchange(pDX);   
    // 处理控件IDC_SUMMAND_EDIT和变量m_editSummand之间的数据交换   
    DDX_Text(pDX, IDC_SUMMAND_EDIT, m_editSummand);   
    // 处理控件IDC_ADDEND_EDIT和变量m_editAddend之间的数据交换   
    DDX_Text(pDX, IDC_ADDEND_EDIT, m_editAddend);   
    // 处理控件IDC_SUM_EDIT和变量m_editSum之间的数据交换   
    DDX_Text(pDX, IDC_SUM_EDIT, m_editSum);   
}  
但是这个函数并不会自动响应,需要人为的调用,就是说何时进行数据的交换,即使用UpdateData()函数进行调用DoDataExchange()函数的执行,
UpdateData()函数的原型为:BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
参数:bSaveAndValidate用于指示数据传输的方向,TRUE表示从控件传给变量,FALSE表示从变量传给控件。默认值是TRUE,即从控件传给变量。
例如:
void CAdditionDlg::OnBnClickedAddButton()   
{  
    // 将各控件中的数据保存到相应的变量   
    UpdateData(TRUE);   
    // 将被加数和加数的加和赋值给m_editSum   
    m_editSum = m_editSummand + m_editAddend;  
    // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   
    UpdateData(FALSE);   
}  
三.关联变量生成的位置
将会在三处生成代码
1. 头文件 访问所选位置(这里是public) int iNumber;
2. 类初始化此变量
3.DoDataExchange 出生成相关代码
   DDX_Text(pDX, IDC_EDIT4, iNumber);
   DDV_MinMaxInt(pDX, iNumber, 0, 50);



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值