MFC对话框控件数据提取之DoDataExchange()

2024-02-05 06:58

本文主要是介绍MFC对话框控件数据提取之DoDataExchange(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于这个函数,MSDN是这样描述的:Called by the framework to exchange and validate dialog data.

 

大意是框架调用此函数来改写与确认对话框数据。 

到是看了下DoDataExchange函数里的DDX型函数,似乎明白了DoDataExchange函数的作用。

 
比如你设计一个游戏,在结束之后弹出个对话框,需要你输入大名,进而保存你结果分数的纪录(如图1),这时你就要在这个对话框类里添加一个变量,来提取文本框输入时的用户名。假设你的对话框ID为IDD_USERNAME_DIALOG,对应类为CUserDialog(UserDialog.cpp,UsernDialog.h),文本框控件的ID为IDC_USER_EDIT,为对话框类添加CString变量m_username,再用DoDataExchange函数将它绑定到你的动态按扭中,比如:DDX_Text(pDX,IDC_USER_EDIT, m_username);这就是将m_username(这是一个外部变量,其定义在对话框的构造函数里)绑定到IDC_USER_EDIT中。 


MFC对话框控件数据提取之DoDataExchange()  

void CUserDialog::DoDataExchange(CDataExchange* pDX) 

    CDialog::DoDataExchange(pDX); 
    DDX_Text(pDX, IDC_USER_EDIT, m_username); 
    DDV_MaxChars(pDX,m_username,10); //将用户名的最大长度控件在10个字符

DDX:Dialog Data Exchange 表示对话框数据交换

DDV:Dialog Data Valid 表示对话框数据有效性
总之,这个函数对理解MFC框架是很有用的。对于写控件也是很有用的。 
good good study,day day up..... 


UpdataData函数内部调用了DoDataExchange。该函数只有一个布尔型参数,它决定了数据传送的方向。调用UpdateData(TRUE)将数据从对话框的控件中传送到对应的数据成员中,调用UpdateData(FALSE)则将数据从数据成员中传送给对应的控件。 

UpdateData(FALSE)是将变量的值传到控件. 
UpdateData(TRUE)是从控件中取值到关联的变量 



DoDataExchange会被框架调用,用来改变和验证对话框的数据。在这个函数中一般是将控件和某些变量关联,当在其它地方改变量的值,通过UpdateData 进行双向交换。如: 

UpdateData();//将控件的值传给变量 
m_username= "风中在飘牛";//分别为控件的变量赋值 
UpdateData(FALSE);//将变量的值传给控件 

这篇关于MFC对话框控件数据提取之DoDataExchange()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680082

相关文章

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键