MFC中的UpdateData
来源:互联网 发布:sql删除dept外键约束 编辑:程序博客网 时间:2024/06/07 07:01
下面是一段MSDN上的内容:
如果使用 DDX 机制,则通常在 OnInitDialog 处理程序或对话框构造函数中设置对话框对象成员变量的初始值。在对话框即将显示前,框架的 DDX 机制将成员变量的值传输给对话框中的控件,当对话框本身为响应DoModal 或 Create 而出现时,这些值即出现在该对话框中。CDialog 中OnInitDialog 的默认实现调用 CWnd 类的 UpdateData 成员函数以初始化对话框中的控件。
当用户单击“确定”按钮(或任何时候调用参数为 TRUE 的 UpdateData 成员函数)时,同样是该机制将控件中的值传输到成员变量。对话框数据验证机制将验证您指定了验证规则的任何数据项。
下图阐释了对话框数据交换。
对话框数据交换
正如传递给它的 BOOL 参数所指定的那样,UpdateData 进行双向交换。为了执行交换,UpdateData 设置CDataExchange 对象并调用对话框类对 CDialog 的 DoDataExchange 成员函数的重写。DoDataExchange 采用CDataExchange 类型的参数。传递给 UpdateData 的 CDataExchange 对象表示交换的上下文,它定义交换方向等信息。
当您(或某个代码向导)重写 DoDataExchange 时,也就指定了对每一数据成员(控件)的一个 DDX 函数的调用。UpdateData 传递给您的DoDataExchange
一个 CDataExchange 参数,每个 DDX 函数都知道如何根据该参数所提供的上下文在两个方向交换数据。
MFC 提供许多用于不同交换类型的 DDX 函数。下例显示一个 DoDataExchange
重写,其中调用了两个 DDX 函数和一个 DDV 函数:
void CMyDialog::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); // Call base class version DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVar); DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName); DDV_MaxChars(pDX, m_strName, 20);}
DDX_
行和 DDV_
行是数据映射。显示的示例 DDX 和 DDV 函数分别用于复选框 (CheckBox) 控件和编辑框控件。
如果用户取消有模式对话框,则 OnCancel 成员函数终止该对话框,并且 DoModal 返回IDCANCEL 值。在此情况下,对话框和对话框对象之间不进行任何数据交换。
简单地说,UpdateData这个函数是用来更新数据的,它有一个BOOL型的参数,
当参数为TRUE时(默认参数就是TRUE),更新窗口中用户输入的值到程序中;(由外到内)
当参数为FALSE时,将程序中的某个值刷新显示到窗口上。(由内到外)
举例来说,譬如一个Edit控件,
若这个Edit是用于接收用户输入的,那么就可以用UpdateData(TRUE)来将用户输入的值保存到程序的某个变量中;
若这个Edit是用于显示数据的(只读),那么当程序中该控件绑定的变量值改变时,可以调用UpdateData(FALSE)函数来更新Edit中的显示。
- mfc中的UpdateData()作用
- MFC中的UpdateData
- mfc中的updatedata函数
- MFC中的UpdateData()
- MFC中的CWnd::UpdateData()函数
- VC++MFC中的UpdateData函数
- MFC UpdateData
- UpdateData() --MFC函数
- UpdateData() --MFC函数
- MFC 的 UpdateData() 函数
- [MFC]UpdateData()的问题
- MFC UpdateData()
- UpdateData() --MFC函数
- UpdateData() --MFC函数
- MFC之updatedata
- MFC 中 UpdateData()用法
- UpdateData() --MFC函数
- UpdateData() --MFC函数
- PHP 正则表达式匹配中文
- OK6410(s3c6410)存储方式之地址存储结构详解
- C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单
- 什么原因成就了一位优秀的程序员?
- CSS3----过渡transition
- MFC中的UpdateData
- _splitpath,_makepath分析路径
- Appfuse
- 用JavaScript(js)对时间格式化
- java.lang.NoClassDefFoundError: com.doodlemobile.gamecenter.Platform
- 序列化的几种方式
- Jquery Mac OS Desktop项目想启动
- 程序员应该了解的查找(java实现)
- Vim 配置详解