MFC中对话框的数据交换(DDX)和数据…

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

<reference MFC TNO 26>
DDX : dialog data exchange
DDV : dialog data validation
文档描述MFC中的DDX DDV机制,如何使用DDX_和DDV_ 函数和定制自己的DDX_ ,DDV_函数;

Dialog Data Exchange概要:
对话框的数据交换不依赖于任何宏来实现,全部依赖于C++代码实现,唯一特别之处在于每一个对话框如果想处理自己的数据交互必须重载一个虚函数void CMyDialog::DoDataExchage(CDataExchage* pDX)

最常见的形式:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);    // call base class
    //{{AFX_DATA_MAP(CMyDialog)
        <data_exchange_function_call>        
    //}}AFX_DATA_MAP
}
在包含AFX的2个字段之间的部分,向导用来定位和编辑代码;
如果想实现自定义的DDX DDV应该定位在这2个字段外

可以在头文件afxdd_.h中找到MFC定义的一些关于DDV DDX的函数的声明;

注意:
DDX /DDV技术虽然被称为对话框数据交换和校验,但是适用于任何需要与控件进行数据交换和校验的CWnd派生类

这些用于交换的成员数据变量一般在对话框的构造函数中的
//{{AFX_DATA_INIT 和 
//}}AFX_DATA_INIT之间的字段中进行初始化的

CWnd::UpdateData()函数用来封装对数据交换(初始化或获取数据)和校验的处理(范围出错)

在程序的任意部分都可以通过调用UpdateData来进行数据交换或数据校验;
默认情况下
在对话框的OnInitDialog()函数中会调用UpdateData(FALSE);
在对话框的OnOK()函数中会调用UpdateData(TRUE);

 


MFC-对话框类的数据交换检验、添加变量 目录:D:\Cpp\Examples\学习C++的每一天\第7天10.28\Add 在程序运行界面中,用户往往会改变控件(编辑框)的属性。例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等。控件的属性改变后MFC会相应修改控件关联变量的值。 这种同步的改变是通过MFC对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫做对话框数据交换检... 阅读详情

相关推荐

MFC对话框数据交换(DDX)实战:Edit Control数据绑定详解

本文深入解析MFC对话框数据交换(DDX)机制,重点讲解Edit Control数据绑定实战。通过对比传统GetDlgItemText手动方式,详细阐述DDX/DDV原理、UpdateData函数双向数据流,并提供从变量绑定、数据验证到自定义规则的完整教程,帮助开发者提升MFC对话框开发效率与代码可维护性。

weixin_29015127的博客 441

Vc中对话框数据交换验证机制

对话框数据交换验证机制    在VC中,所有的对话框函数都是使用C++代码实现的,它并没有采用特殊的资源或“奇特”的宏,但却可以很好地实现用户与应用程序之间的交互工作,这里的关键就在于对话框应用程序中广泛采用的对话框数据交换验证机制。    对话框数据交换(Dialog Data Exchange,DDE)用于初始化对话框中的控件并获取用户的数据输入,而对话框数据验证(Dialog

博文视点(北京)官方博客 2530

[MFC]DoDataExchange的对话框数据交换检验

1. 对话框里控件上的数据应该如何保存?     1) 一般需要在CDialog的派生类中定义一些数据成员用来保存控件中用户输入的数据;     2) 那么最大的问题就是如何让这些定义的数据成员控件中的数据进行及时的交流——使用SetDlgItemTextGetDlgItemText两个函数即可:          i. 在OnInitDialog中使用SetDlgItemText将数据

Lirx_Tech的专栏 2556

mfc 固定编辑框输入上限下限_[MFC] 编辑框 EditControl 输入数字范围限制

MFC中,项目需要对编辑框EditControl的数字输入范围进行限制,主要有以下实现方式,各有优缺点,个人推荐最后一个。第一种:添加变量为编辑框添加int、float变量的时候,可以填写最大值与最小值;或者自己添加代码DDV_MinMaxInt(pDX, m_nNum, 1, 65535);测试发现:只有在UpdateData(true)更新变量之后,才会对该变量的值进行判断,并弹出对话框提醒...

weixin_39963440的博客 744

MFC操作--控件显示及数据交换

1、ShowWindow() 函数作用:一个控件有时需要显示,有时需要隐藏。 参数:TRUE--显示该控件 FALSE—隐藏该控件 伪代码如下: if (condition) //满足条件则显示该控件 GetDlgItem(IDC_ STATIC1)->ShowWindow(TRUE); else //不满足条件则隐藏该控件 GetDlgItem(IDC_ STATIC1)->ShowW

学习使我快乐 2042

MFC浅析(6) 对话框数据交换及验证

对话框数据交换及验证<!-- body {color:black;font-family: "宋体"; font-size: 9pt} p {color:black;font-family: "宋体"; font-size: 9pt} pre {color:black;font-family: "宋体"; font-size: 9pt} td {c

FMD STUDIO 2981

MFC对话框数据交换(DDX)数据校验(DDV)

MFC对话框数据交换(DDX)数据校验(DDV)DDX : dialog data exchangeDDV : dialog data validation文档描述MFC中的DDX DDV机制,如何使用DDX_DDV_ 函数定制自己的DDX_ ,DDV_函数;Dialog Data Exchange概要:对话框数据交换不依赖于任何宏来实现,全部依赖于C++代码实现,唯一特别之处在于

永彦的专栏 7710

MFC对话框数据交换(DDX)数据校验(DDV)。。。

MFC对话框数据交换(DDX)数据校验(DDV) DDX : dialog data exchange DDV : dialog data validation 文档描述MFC中的DDX DDV机制,如何使用DDX_DDV_ 函数定制自己的DDX_ ,DDV_函数; Dialog Data Exchange概要: 对话框数据交换不依赖于任何宏来实现,全部依赖于C++代码实

Beyond.cn 1488

MFC对话框数据交换

       对话框是非常重要的一种窗体,就我看过的应用,除了MDI程序,对话框比文档视图框架用得更多。原因大概有两个,首先对话框可以利用资源编辑器来编辑,这就有了一点快速开发的感觉,尽管比真正的快速开发弱得多;其次,对话框提供一种叫数据交换的方法,让控件与某种数据类型关联起来,比如Edit控件与CString变量关联,对CString变量的操作间接映射到Edit控件,这种方便性是不言而喻的。

colin 7256

DDXDDV

DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) (DDV)宏实现。 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与变量之间值的传递。 当然你也可以不使用DoDataExchange而完成控件与变量之间值的传递,如:通过GetWindowTextSetWindowText等等函数完成String变量与Edit控件之间数据交互。 DDX/DDV 通过使用ClassWizard向对话类添加成员变量,你可以利用Clas.

顺其自然~专栏 2239

MFC对话框数据交换

对话框         对话框分为模态对话框无模态对话框。 模态对话框就是指在子对话框弹出时,焦点被强行集中于该子对话框,子对话框不关闭,用户将无法操作其他的窗口。非模态相反,用户仍然可以操作其他的窗口,包括该子对话框的父对话框。 如果从线程角度来讲,模态对话框实际上是线程阻塞的,也就是子对话框是一个线程,但是在创建这个子线程之后,父窗口就阻塞了;模态对话框则不是阻塞型的线程模型,父子线程

超越 2947

【05】MFC入门到精通——MFC对话框中的控件添加变量 数据交换检验

本文介绍了为对话框控件添加变量并实现数据交换的步骤:首先通过右键菜单为编辑框控件添加double类型的成员变量(如m_editSummand),这些变量会在Dlg.h头文件Dlg.cpp初始化函数中自动生成。MFC通过DoDataExchange()函数实现控件与变量之间数据交换,该函数包含DDX_Text调用语句。数据交换需手动调用UpdateData()函数完成,其参数TRUE表示从控件传值到变量,FALSE则相反。整个过程建立了对话框控件与成员变量的双向数据绑定机制,为后续的消息处理奠定了基础。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1307
上一篇: 如何在MapInfo标注每一个地理位置…
下一篇: 弯曲评论:有感于“研发人员的个人…
Tigeresta
博客等级 码龄17年 26粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值