已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
下面是我在学习MFC时,对UpdateData函数的一些研究和总结,希望能给大家一些帮助。UpdateData函数原型为:BOOL UpdateData(BOOL bSaveAndValidate=TRUE);返回值为:操作成功则返回非零。否则返回0.如果bSaveAndValidate为TRUE,则返回值为非零表明数据已经成功地被校验了(从编辑框传到所关联的成员变量)下面是在MSDN中的原话:Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated参数:bSaveAndValidate如果为TRUE,则从对话框控件中获取数据,如果为FALSE,则把数据传递到控件中去。备注:调用这个成员函数从对话框中获取数据,或者初始化对话框中的控件数据。两个会隐式调用UpdateData的函数:CDialog:OnInitiDialogCDialog:OnOkCDialog:OnCancel:这个函数不会调用UpdatData,写在这里只是为了与OnOk函数做对比CDialog:OnInitiDialog:先给出这个函数的定义:BOOL CDialog:OnInitDialog()/ execute dialog RT_DLGINIT resourceBOOL bDlgInit;if (m_lpDialogInit != NULL)bDlgInit = ExecuteDlgInit(m_lpDialogInit);elsebDlgInit = ExecuteDlgInit(m_lpszTemplateName);if (!bDlgInit)TRACE0(Warning: ExecuteDlgInit failed during dialog init.n);EndDialog(-1);return FALSE;/ transfer data into the dialog from member variablesif (!UpdateData(FALSE)TRACE0(Warning: UpdateData failed during dialog init.n);EndDialog(-1);return FALSE;/ enable/disable help button automaticallyCWnd* pHelpButton = GetDlgItem(ID_HELP);if (pHelpButton != NULL)pHelpButton-ShowWindow(AfxHelpEnabled() ? SW_SHOW : SW_HIDE);return TRUE; / set focus to first one当一个模态对话框在CDialog:OnInitiDialog中被创建的时候框架会自动调用UpdateData(FALSE),把变量的初始值传递到编辑框中显示出来。这个调用发生在对话框可见之前。这就可以解释为什么当我们给对话框控件关联成员变量后,运行时打开对话框后,会在控件中看到默认的数据了。原因有二:一在给控件关联成员变量以后,通常会在类的构造函数中对各个成员变量进行初始化。二在OnInitDialog函数中,会调用UpdateData(FALSE),于是就把在构造函数中初始化的成员变量的值传递到控件中去了而CDialog:OnOk的默认版本会调用UpdateData(TRUE)来接收数据,对于CDialog:OnCancel函数则不会CDialog:OnOk:函数定义如下void CDialog:OnOK()if (!UpdateData(TRUE)TRACE0(UpdateData failed during dialog termination.n);/ the UpdateData routine will set focus to correct itemreturn;EndDialog(IDOK);而CDialog:OnCancel的定义为:void CDialog:OnCancel()EndDialog(IDCANCEL);可以看出,OnOK函数会调用UpdateData(TRUE)向变量中传递数据,然后关闭对话框,而OnCancel函数则不会。例:假如有一个下图所示的对话框:在OK按钮的响应函数中添加如下代码:其中m_num2为编辑框2所关联的变量。运行程序后,在编辑框中输入数字5,则点击OK按钮后,首先关闭对话框(调用CDialog:OnOK();)然后会弹出消息盒:这个例子说明了,CDialog:OnOK()函数会调用UpdateData(TRUE),将控件中的内容传递到所关联的变量中去。我们在CTestDlg:OnCancel()中添加同样的代码void CTestDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();char ch100;AfxMessageBox(itoa(m_num2,ch,10),ch);注意:实际上这里用AfxMessageBox(itoa(m_num2,ch,10);就可以了,用AfxMessageBox(itoa(m_num2,ch,10),ch);完全是多此一举,因为itoa(m_num2,ch,10)的返回值就是ch的值。更简单的一种方法是:CString str;str.Format(%d,m_num2);AfxMessageBox(st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风险管理培训试题及答案
- 2025年福州润楼运营管理有限公司公开招聘备考题库及1套完整答案详解
- 2025年吉林大学经济学院专业教师招聘5人备考题库(二)带答案详解
- 2025年那坡县中小学教师招聘笔试参考题库及答案解析
- 电科集团行政主管笔试模拟题含答案
- 普洱市民族中学2026年度急需紧缺人才第二批招聘备考题库附答案详解
- 2025年湖南有线双牌网络有限公司招聘备考题库带答案详解
- 沙钢集团会计岗位面试题目一览
- 2025年广西能源集团有限公司社会招聘备考题库完整答案详解
- 中国煤炭地质总局2026年度应届高校毕业生招聘468人备考题库及完整答案详解一套
- 法律诊所(第三版)课件全套 第1-10章 入门、会见-调解
- QC工作流程图模板
- 电梯维保服务投标方案
- 4继电控制线路故障检测与排除
- 国家开放大学《公共部门人力资源管理》期末机考资料
- 大学生职业规划与就业指导知到章节答案智慧树2023年广西中医药大学
- GB/T 20969.2-2021特殊环境条件高原机械第2部分:高原对工程机械的要求
- PMBOK指南第6版中文版
- 快速记忆法训练课程速读课件
- 步战略采购方法细解 CN revison 课件
- 酒店装饰装修工程施工进度表
评论
0/150
提交评论