永发信息网

什么是DDV/DDX技术?如何使用这种技术?

答案:1  悬赏:50  手机版
解决时间 2021-01-06 10:15
什么是DDV/DDX技术?如何使用这种技术?
最佳答案
DDV DoDataValiad数据验证 DDX DoDataExchange 数据交换
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)或参数为空  数据从控件向相关联的成员变量复制。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
淘宝35周年 ga 135a价格在多少才能放心
我是哥哥,昨天我一时冲动抱着我妹妹吻了。当
带有长长的走廊这句歌词的歌有哪些
在iPad的微信里如何把相册里的200M视频(MP4)
洞房女人会老吗
苹果手机7plusq热怎么办
fall ill 还是fall sick
可以辞掉工作去跑Uber吗?
酒糟发酵多少天可蒸酒
fx组合的全部小说
日本和光堂批号F是哪一年
国考or银行招考:央行好还是银保监会好
蟑螂怕香水或者花露水吗?
阳光湘的阳光湘
家常榨菜肉丝面的做法步骤图,怎么做好吃
推荐资讯
我的驾驶为什么只11分
转运珠戴十二颗好吗
谁有城市欲望夜整部小说
马自达cx_52.0l四驱车怎么样
中国的企业应该怎样落实现代采购理念
借款5w 私/人/ 急用 利息高点儿也没
永川至泸沽湖全长多少公里
【在线等】网络童星QQ号!跪求!!!!!
excel如何对以下的判断计算加函数? 例 A1小
小说《神墓》中,辰南到底是什么身份???
王家彭旺村加油站地址好找么,我有些事要过去
军人领带怎么打开。军装的领带是拉链的,怎么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?