注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

慵懒的乌龟

——若有,且珍惜~

 
 
 

日志

 
 

关于MFC的DDV/DDX技术  

2011-12-21 22:37:22|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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 /*=NULL*/)          
: 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)或参数为空  数据从控件向相关联的成员变量复制。
感谢:孤松独海 
  评论这张
 
阅读(788)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018