【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《MFC DDX和DDV的使用方法》,欢迎阅读!
MFC DDX和DDV的使用方法
1、概要
MFC提供了方便的对话框实例与变量的映射机制。DDX(Dialogs Data exchange)负责控件值与变量的同步,而DDV(Dialog Data Validate)负责实现在同步过程中对双方赋值的验证功能。
当定义一个CDialog的派生类时,用户可以把相关的成员变量封装在类定义中,重载CDialog中DoDataExchange中的虚函数,以便用于与窗口派生类中其他控件值作为同步使用。
规则上,DoDataExchange会被默认调用两次,一次是在窗口创建时(当对话框接受到WM_INITDIALOG消息),第二次被调用是在用户单击对话框IDOK空间时,也就是对话框关闭的时候。两次调用都是为了能够与其他窗口控件的成员变量同步。
2、手动添加方法
(1)在头文件中,增加与控件关系的成员变量的声明,代码: // Dialog Data
//{{AFX_DATA(CMyDlg)
enum { IDD = IDD_DIALOG5 }; int m_edit;
//}}AFX_DATA
(2)在 .CPP文件中的DoDataExchange函数体内,增加控件的DDX/DDV代码。
void CMyDlg::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDlg)
DDX_Text(pDX, IDC_EDIT1, m_edit);//将控件与变量进行关联 DDV_MinMaxInt(pDX, m_edit, 1, 10);//校验最大值和最小值 //}}AFX_DATA_MAP }
(3)调用CWnd::UpdataData(BOOL bSaveAndValidate = TRUE )函数进行控件与变量的数据交换和校验。
bSaveAndValidate = TRUE,或保持默认:数据从控件向成员变量传输; bSaveAndValidate = FALSE:数据由变量向控件传输
3、常见的数据交换函数
交换函数 DDX_CBIndex DDX_CBString DDX_CBStringExact DDX_Check DDX_DateTimeCtrl DDX_LBIndex DDX_LBString DDX_LBStringExact DDX_MonthCalCtrl DDX_Radio DDX_Scroll DDX_Text
获得/设置的数据类型
int CString CString int CTime int CString CString CTime int int
CString或数值型(整型、浮点数等)
应用控件 Combobox Combobox Combobox Check box Datetimepicker List box List box List box Month calendar Radio button Scroll bar Edit control
另外还有一个重要的交换函数DDX_Control函数,能够将任意的控件与相应的控件变量相关联,相当于控件的对象实例。
4、对话数据验证函数
交换函数
DDV_MinMaxByte DDV_MinMaxInt DDV_MinMaxUInt DDV_MinMaxLong DDV_MinMaxDWord DDV_MinMaxFloat DDV_MinMaxDouble DDV_MaxCharsCString
含义
指定限制范围内的一个BYTE值 指定限制范围内的一个int值 指定限制范围内的一个UNIT值 指定限制范围内的一个long值 指定限制范围内的一个DWORD值 指定限制范围内的一个float值 指定限制范围内的一个double值 字符串的长度不能超过指定的最大长度
除了验证函数DDV_MaxCharsCString之外,所有函数都监视数值数据,以确保由用户输入的值落在指定的上下限之间。DDV_MaxCharsCString函数,用来验证键入到编辑控件或组合框中的字符数不超过给定的最大值。
与交换函数不同,验证函数仅仅在对话关闭的时候起作用,而不在它刚出现的时候起作用。
本文来源:https://www.wddqxz.cn/9f46cc3068d97f192279168884868762caaebb2a.html