MFC的DDX和DDV技巧

转载自:http://blog.sina.com.cn/s/blog_698987c00100vnlj.html

 

来自:sopper的博客 C++控件的数据沟通和数据校验

MFC批准了尤其的DDX和DDV技巧。

DDX将数据成员变量同对话类模板内的控件相连接,这么就使得数据在控件之间很轻率地传输。

DDV用于数据的校验,例如它能积极校验数据成员变量数值的范围,并公布相应的警告。

 

在类向导下增加成员变量的过程很容易,必需解释的是

。在DDV/DDX技巧中,批准用户为统一个控件关系多个数据成员变量,但定然保证这些变量名是互不雷同的,且这些变量在统一个种类不能有多个变量,即在Value和Control种类中各准⒒能有一个成员变量。

。万一增加的成员变量是一个数值种类,则在类向导对话框的Member Variables版面正文还要求用户输入变量的范围,这即便控件的数据校验设置。

 

增加告终成员变量后,类向导会在代码文件里加入如下代码

1. 在头文件中,增加与控件关系的成员变量的声明,代码:
// Dialog Data

 //{{AFX_DATA(CMyDlg)

 enum { IDD = IDD_DIALOG5 };

 int m_edit;

 //}}AFX_DATA

2. 在 .CPP文件中的类构造函数告终代码处,增加数据成员变量的一些初始化代码

CMyDlg::CMyDlg(CWnd* pParent )

   : CDialog(CMyDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CMyDlg)

m_edit = 0;

//}}AFX_DATA_INIT

}

3. 在 .CPP文件中的DoDataExchange函数体内,增加控件的DDX/DDV代码,它们都是一些以DDV_或DDX_开关的函数调用。
void CMyDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);//调用此函数作为DDX的开始

//{{AFX_DATA_MAP(CMyDlg)

DDX_Text(pDX, IDC_EDIT1, m_edit);//将控件与变量举行数据沟通

DDV_MinMaxInt(pDX, m_edit, 1, 10);//校验最大值和最小值

//}}AFX_DATA_MAP

}
必需解释的是,上述代码中以 “//{{AFX_DATA” 或“//{{AFX_DATA_XXXX”开始,而以 “//}}AFX_DATA” 或 “//}}AFX_DATA_”结尾的符号是类向导定义的专程用来做DDX/DDVr 符号,表示该局部的代码是同类向导积极管教,用户等闲无须要去改动。

4.当为一个控件定义一个关系的数据成员变量后,就能够利用CWnd::UpdataData函数告终控件的扼制,包括控件相干数据的输入和读取。
UpdateData(FALSE)   数据由控件相干的成员变量向控件传输
UpdateData(TRUE)或参数为空  数据从控件向相干联的成员变量复制。

你可能感兴趣的:(MFC的DDX和DDV技巧)