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

在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. 机器学习模型太大难部署?这里有 3 个解决方案
  2. vue.js的一些事件绑定和表单数据双向绑定
  3. 3.APC的挂入过程
  4. 20145203 《信息安全系统设计基础》第十三周学习总结
  5. 第44讲:scrapy中间键Middleware的使用
  6. java list分批_Java实用笔记——mybatis批量导入
  7. Destoon数据库配置文件在哪_Mybatis 系列 2:Mybatis 的两种配置文件
  8. pythonopencv算法_opencv python 光流法
  9. python gdal帮助文档
  10. android电视机清理内存,电视盒子总是内存不足?五大清理方法释放更多内存
  11. 读书笔记-《墨菲定律》
  12. android paint 线宽_Android绘图:绘制直线的 drawLine方法
  13. MacOS 使用SwitchHosts修改 hosts 不生效的原因及解决方法
  14. vscode在html看到图片的插件_自从用了这款PPT插件,我才知道什么叫做高效办公!...
  15. DA14580软件开发平台参考(一)
  16. 虾皮API接口—按关键字搜索商品
  17. P2321 [HNOI2006]潘多拉的宝盒 题解
  18. HPA的target显示unknown
  19. 社交视频Socialcam独领风骚:躺在Facebook的温床上借力YouTube?
  20. [dataframe]python数据集中数据统计分析

热门文章

  1. linux中vim中文显示乱码
  2. Benelux Algorithm Programming Contest Final-B解题报告
  3. [ZJOI2014]力
  4. EasyUI分页加载datagrid时候报错Uncaught TypeError: Cannot read property 'length' of undefined...
  5. 命令行解决mysql中文乱码
  6. Eclipse Error:“ An API baseline has not been set ” 解决办法
  7. cocos2d-x 3.2 DrawNode 绘图API
  8. 51单片机汇编_1_内外存储器转移数据
  9. pymongo使用经验
  10. 预训练语言模型关系图+必读论文列表,清华荣誉出品