对话框数据交换和验证机制

在VC中,所有的对话框函数都是使用C++代码实现的,它并没有采用特殊的资源或“奇特”的宏,但却可以很好地实现用户与应用程序之间的交互工作,这里的关键就在于对话框应用程序中广泛采用的对话框数据交换和验证机制。
    对话框数据交换(Dialog Data Exchange,DDE)用于初始化对话框中的控件并获取用户的数据输入,而对话框数据验证(Dialog Data Validation,DDV)则用于验证对话框中数据输入的有效性。MFC在每个对话框类中提供了一个用于重载的虚函数——DoData Exchange来实现对话框数据交换和验证工作。
•    对话框数据交换
    如果使用DDE机制,则通常在OnInitDialog程序或对话框构造函数中设置对话框对象成员变量的初始值。在对话框即将显示前,应用程序框架的DDE机制将成员变量的值传递给对话框的控件,当对话框响应DoModal或Create而被显示时,对话框控件将“显示”这些值。Cdialog类中的OnInitDialog函数默认时将调用CWnd类的UpdateData成员函数初始化对话框中的控件。UpdateData函数的原型如下:
    BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
    函数参数为TRUE,即将对话框及其控件中的数据传递给程序代码中的成员变量;函数参数为FALSE,即将类中的数据状态传递给对话框及其控件。
当     用户重载DoDataExchange函数时,也就为每一个数据成员(控件)指定了一个DDE函数调用。
•    对话框数据验证
     除了调用DDE参数指定数据交换外,用户还可以使用DDV函数进行对话框数据验证。在调用控件的DDE函数后,必须立即调用该控件的DDV函数。大部分DDV函数的原型如下所示。
    DDV_MinMaxCustom(pDX, Data, MinData, MaxData);
    其中,参数pDX是一个指向CdataExchange对象的指针,参数Data中存放着即将被验证的数据,后两个参数用于定制数据的范围。
     如果仅仅需要使用对话框数据,一般没有必要了解数据交换/验证的核心内容。但在了解了数据交换和验证的实质后,用户就可以编写自己的数据交换和验证代码,定制DDE/DDV。

Vc中对话框数据交换和验证机制相关推荐

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

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

  2. Java 数据交换格式反射机制SpringIOC原理分析

    数据交换格式&反射机制&SpringIOC原理分析 什么是数据交换格式? 数据交换格式使用场景 JSON简单使用 什么是JSON? JSON格式的分类 常用JSON解析框架 使用fas ...

  3. 软件系统开发中的数据交换协议

    在很多地方都有"数据交换"这个概念,本文所说的"数据交换" 是指在计算机网络中,一个系统把数据传递给另外一个系统.这非常类似于一个人要告诉另外一个人一件事情. ...

  4. 计算机网络FMD是什么,计算机网络中的数据交换

    计算机网络中,数据交换的类型有:电路交换.报文交换.分组交换. ☞数据交换--电路交换 Q:如何实现数据通过网络核心从源主机到达目的主机? A:数据交换.(现在网络主要采用的技术是数据交换) 2台主机 ...

  5. Smartcard中PPS数据交换分析

    相关文章: <Smartcard 中 T0 协议等待时间 WT 的定义和计算> 1. 什么是PPS? PPS,全称为Protocol and Parameters Selection,直译 ...

  6. 纯新手DSP编程--5.31--DSP/BIOS中的数据交换

    DSP/BIOS内核提供了丰富的数据交换途径.利用DSP/BIOS,用户不仅可以方便的实现DSP应用程序与主机的CCS或其他Windows程序之间的数据交换(RTDX和HST),而且还可以利用PIP或 ...

  7. iOS 中 XML 数据交换格式

         XML 是一种自描述的数据交换格式,但是 XML 的数据交换格式并没有 JSON 来的轻便,但是无可否认的是,XML 的应用范围也是非常广泛的,比如在 ROS(一个开源机器人操作系统)中利用 ...

  8. 测试中的数据统计分析的验证:python脚本+复杂SQL总结

    正式从PHP开发转到测试岗位已有1年半,中间的职业发展与所思所考应该有1个阶段的总结,总结将在下一篇完成.今天就先通过在工作中实际用到的python脚本+复杂sql记录一下自己在测试过程中做的数据验证 ...

  9. 三维建模模型STP格式与Matlab中simscape数据交换的问题

    最近在研究把三维模型中的数据转换到MATLAB上进行仿真,初步知道了MATLAB工具包中Simscape可以进行物理建模.下面的内容主要是从迈斯沃克官方网站上看到的,当然也有一点自己的琢磨. 可以将C ...

  10. 计算机网络中 数据交换的方式有,计算机网络中的通信数据交换技术探讨

    计算机网络中的通信数据交换技术探讨 摘要:随着科技不断发展,人们对计算机网络技术越来越关注,计算机网络为人们生活带来诸多便利,是科技发展的基础工程.近年来,计算机网络中的通信数据交换技术被广泛应用,网 ...

最新文章

  1. CUDA Samples: Long Vector Add
  2. PEP Python Enhancement Proposals(python增强提案\python改进建议书)(重点PEP8)
  3. 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用...
  4. 2016光伏创新如何突围融资困境?
  5. 自定义镜像-Dockerfile
  6. H5微信分享朋友、朋友圈、QQ
  7. Netty源码分析第5章(ByteBuf)----第5节: directArena分配缓冲区概述
  8. python基础(15)之 继承
  9. megento 获取url参数
  10. Dubbo项目简单实践
  11. 《An Introduction to Ray Tracing》——2.2 Ray/Sphere Intersection And Mapping
  12. oracle 创建表同时添加注释
  13. JAVA实现MD5算法、SHA1算法和SHA256算法
  14. UNI-APP 小程序生成海报
  15. c语言程序运行超时是怎么回事,这个运行超时是什么原因?求助~
  16. 阿里云快速搭建个人网站
  17. Azkaban重新编译,解决:Could not connect to SMTP host: smtp.163.com, port: 465【2022年01月10日】
  18. 操作系统---linux
  19. tf.nn.conv2d和tf.contrib.slim.conv2d的区别
  20. STA基础分析-setup和hold

热门文章

  1. ubuntu 切换java环境,配置单独的用户环境
  2. C# typeof()实例详解
  3. setter方法的内存错误
  4. 禁止页面拖拽事件(数据什么的)
  5. yii2怎样写规则可以隐藏url地址里的控制器名字
  6. CocoStudio练习笔记3 - 动画编辑器
  7. IAR使用技巧 之 快捷键批量更换指定字符(以及Keil的全局替换功能)
  8. MongoDB DBA 实践2-----MongoDB CRUD操作
  9. Node.js Unix/Linux NVM
  10. linux yum list、search、-y、install、update、remove、grouplist、groupinstall、groupremove