DDX/DDV
       通过使用ClassWizard向对话类添加成员变量,你可以利用ClassWizard所提供的高效特征,为对话数据交换和对话数据验证自动生成源代码,也就是人们所熟知的DDX/DDV。
       数据交换和验证仅仅应用于为之选定了Value类别的成员变 量。也就是CString,BOOL,数字,COleDateTime或COLeCurrency。
       对话数据交换负责数据在控件中的进出。当对话首次出现的时候,每个控件窗口自动用相应的成员变量的值进行初始化。当用户通过单击OK按钮,或 通过按Enter键关闭对话的时候,该控件无论是包含哪一个值或文本,都将被复制回该变量。
       对话数据验证可以确保值落在规定的限制之内。交换和验证机制都是由MFC框架提供的。每个函数都有一个前缀DDX_或DDV_,来把它作为数据交换或数据验证函数来标识。
1. 对话数据交换(DDX)
       常见的对话数据交换函数
     (1)交换函数:DDX_CBIndex,                  获得/设置的数据类型:int,                         应用于控件:Combobox
     (2)交换函数:DDX_CBString,                 获得/设置的数据类型:Cstring,          应用于控件:Combobox
     (3)交换函数:DDX_CBStringExact,获得/设置的数据类型:Cstring,         应用于控件:Combobox
     (4)交换函数:DDX_Check,                        获得/设置的数据类型:intCheck, 应用于控件:box
     (5)交换函数:DDX_DateTimeCtrl,    获得/设置的数据类型:Ctime,             应用于控件:Datetimepicker
     (6)交换函数:DDX_LBIndex,                  获得/设置的数据类型:int,                       应用于控件:List box
     (7)交换函数:DDX_LBString,                获得/设置的数据类型:CString,        应用于控件:Listbox
     (8)交换函数:DDX_LBStringExact,获得/设置的数据类型:CString,         应用于控件:List box
     (9)交换函数:DDX_MonthCalCtrl, 获得/设置的数据类型:Ctime,             应用于控件:Month calendar
     (10)交换函数:DDX_Radio,                    获得/设置的数据类型:int,                       应用于控件:Radio button
     (11)交换函数:DDX_Scroll,                     获得/设置的数据类型:int,                       应用于控件:Scroll bar
     (12)交换函数:DDX_Text,                         获得/设置的数据类型:CStringor numerical(BYTE,short,int,UINT,long,etc.),应用于控件:Edit control
       在所有的数据交换函数之中,该函数是独一无二的,它只应用于一组控件,而不是一个控件。DDX_Radio返回一个int值用来指示用户打开了组中的哪个按钮:0代表组中的第一个按钮,1代表第二个按钮,以此类推。值-1的意思是小组中的所有按钮都是清除的。你可以调用DDX_Radio来确定单个单选按钮的状态(假如它是组中的唯一一个按钮)。在这种情况下,返回值0的意思是按钮是打开的,值-1意为按钮是关闭的。
       建立一个单选按钮通常在对话编辑器中进行,我们一会儿就能看到。
       MFC提供了大量的对话数据交换函数,它们可以在对话类中的控件成员变量之间移动数据。除了所列的常见函数之外,还有用于记录集数据和由ActiveX控件返回的数据的特殊交换函数。DDX_Control函数可以为几种不同类型的控件传输数据,例如Animate和IPAddress。
2. 对话数据验证(DDV)对话数据验证函数,它们仅仅应用于接受用于从键盘输入数据的控件成员变量。换言之,就是编辑控件和组合框。
       对话数据验证函数
     (1)DDV_MinMaxByte指定限制范围内的一个BYTE值。
     (2)DDV_MinMaxInt指定限制范围内的一个int值。
     (3)DDV_MinMaxUInt指定限制范围内的一个UNIT值。
     (4)DDV_MinMaxLong指定限制范围内的一个long值。
     (5)DDV_MinMaxDWord指定限制范围内的一个DWORD值。
     (6)DDV_MinMaxFloat指定限制范围内的一个float值。
     (7)DDV_MinMaxDouble指定限制范围内的一个double值。
     (8)DDV_MaxCharsCString字符串的长度不能超过指定的最大长度。
       当你为编辑控件或组合框添加成员变量,然后在Member Variable选项卡中的Control IDs框中选择控件的时候,两个提示之一将会出 现在该选项卡的底部。究竟出现哪一个提示取决于变量所具有的是数字数据,还是文字数据;在任一种情况下,都要输入用于验证的变量限制值。
       除了一个对话数据验证函数之外,所有函数都监视数值数据,以确保由用户输入的值落在指定的上下限之间。
       例外是DDV_MaxChars函数,它用来验证键入到编辑控件或组合框中的字符数不超过给定的最大值。与交换函数不同,验证函数仅仅在对话关闭的时候起作用,而不在它刚出现的时候起作用。
       如果输入到一个控件的值落到了指定的限制之外,那么,该控件的验证函数将显示一个消息框,以通知用户出了问题。当消息框被关闭的时候,出问题的控件将具有一个焦点,提示用户重新输入数据。除非所有的数据验证函数都满足了,否则,用户不能够通过单击OK来关闭对话。

VC++中的DDX和DDV相关推荐

  1. MFC中的DDX和DDV

    出处:http://m.blog.csdn.net/blog/weiqubo/8179167 DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实 ...

  2. VC中DDX/DDV自定义

    DDX用于控件与变量的数据交换.DDV用于对数据交换后的变量进行校验,倘若校验失败将抛出异常导致Updata后面部分不能正常执行.必要时需要对Updata的返回值进行判断.     对于数据交换,需要 ...

  3. VC/MFC DDX和DDV机制介绍

    VC/MFC DDX和DDV机制介绍 C++的MFC类库中为用户提供了在对话框控件和数据变量间交换数据的         DDX/DDV(数据交换/数据验证)机制,而在此之前,用户只能通过调用     ...

  4. 在ODBC中应用DDX和RFX

    在ODBC中应用DDX和RFX        MFC中ODBC类库简介 ---- MFC 中 针 对ODBC 数 据 库 编 程 提 供 了 五 种 基 类. 这 些 类 封 装 了 有 关ODBC ...

  5. VC++中对话框数据交换【十全十美】

    如果使用 DDX 机制,则通常在 OnInitDialog 处理程序或对话框构造函数中设置对话框对象成员变量的初始值.在对话框即将显示前,框架的 DDX 机制将成员变量的值传输给对话框中的控件,当对话 ...

  6. VC中MapX的开发

    MAPX在VC中的开发 // ----------------------------------------------------------------------- // Reference: ...

  7. DDX和DDV工作内幕

    DDX和DDV工作内幕 本文转自:http://yebin100.spaces.live.com/blog/cns!FDE47F0C54FC403E!137.entry?sa=117455521 DD ...

  8. VC中基于 Windows 的精确定时

    方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...

  9. vc中常用文件操作(二) Ini文件操作

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINA ...

最新文章

  1. java多线程常用面试_java的多线程常见面试题
  2. AI工程师面试知识点:TensorFlow 框架
  3. 【oracle】复合数据类型
  4. PWM波形的simulink仿真
  5. SAP Cloud for Customer移动端应用SAP推荐的网络时延参数
  6. 8 Regular Expressions You Should Know
  7. (18)Vue DevTools插件
  8. mysql trim 索引_mysql 强大的trim() 函数
  9. 第三:Pycharm中安装Python依赖包(非常详细)
  10. c语言右上左下遍历数组,如何将一个数组的元素循环左移?
  11. mysql中mapping标签的作用_3种高效的Tags标签系统数据库设计方案分享
  12. mysql 注释几种方法
  13. https://www.icourse163.org/learn/PKU-1002534001?tid=1003136008#/learn/quiz?id=1003986014
  14. DREAD风险评估模型
  15. html播放器参数,sewise HTML5开源播放器参数说明
  16. Excel 技巧篇 - 选择性粘贴表格数据,excel只粘贴数值不粘贴公式
  17. 类的加载、连接和初始化
  18. equal 源码剖析
  19. NER项目--github--A Unified MRC Framework for Named Entity Recognition
  20. Mockplus原型设计学习笔记(1)—— 图层的调节

热门文章

  1. tmpfs - 临时文件系统
  2. 车载OS - AGL 和 GENIVI区别
  3. java版gRPC实战之一:用proto生成代码
  4. mysql反掩码_运维工程师速成
  5. 计算机课学情分析范文,计算机教学计划范文
  6. RGB图片处理(3)——RGB转YUV以及彩虹色阶梯图
  7. Micro Framework WireProtocol协议介绍
  8. 在线HTTP网站载入速度(响应时间)站长测试(检测)工具
  9. 清华大学网络研究院-绿盟科技集团共建“未来互联网安全联合研究中心(JCFIRST)...
  10. position定位,下列说法错误的是( )