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



你可能感兴趣的:(MFC)