在对话框中进行数据交换和数据检查

2016-02-19 12:20 1 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的在对话框中进行数据交换和数据检查,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

MFC提供两种方法在对话框中进行数据交换和数据检查(Dialog data exchange/Dialog data validation),数据交换和数据检查的思想是将某一变量和对话框中的一个子窗口进行关联,然后通过调用BOOL UpdateData( BOOL bSaveAndValidate = TRUE )来指示MFC将变量中数据放入子窗口还是将子窗口中数据取到变量中并进行合法性检查。

在进行数据交换时一个子窗口可以和两种类型的变量相关联,一种是控件(Control)对象,比如说按钮子窗口可以和一个CButton对象相关联,这种情况下你可以通过该对象直接控制子窗口,而不需要象上节中讲的一样使用GetDlgItem(IDC_CONTROL_ID)来得到窗口指针;一种是内容对象,比如说输入框可以和一个CString对象关联,也可以和一个UINT类型变量关联,这种情况下你可以直接设置/获取窗口中的输入内容。

而数据检查是在一个子窗口和一个内容对象相关联时在存取内容时对内容进行合法性检查,比如说当一个输入框和一个CString对象关联时,你可以设置检查CString的对象的最长/最小长度,当输入框和一个UINT变量相关联时你可以设置检查UINT变量的最大/最小值。在BOOL UpdateData( BOOL bSaveAndValidate = TRUE )被调用后,合法性检查会自动进行,如果无法通过检查MFC会弹出消息框进行提示,并返回FALSE。

设置DDX/DDV在VC中非常简单,ClassWizard可以替你完成所有的工作,你只需要打开ClassWizard并选中Member Variables页,如图,<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

你可以看到所有可以进行关联的子窗口ID列表,双击一个ID会弹出一个添加变量的对话框,如图,

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

填写相关的信息后按下确定按钮就可以了。然后选中你刚才添加的变量在底部的输入框中输入检查条件,如图。

下面我们看一个例子,对话框上的子窗口如图设置,各子窗口的ID和关联的变量如下表:

ID

关联的变量

作用

IDC_CHECK_TEST

BOOL m_fCheck

检查框是否被选中

IDC_RADOI_TEST_1

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

int m_iSel

当前选择的圆形按钮的索引

IDC_COMBO_TEST

CString m_szCombo

组合框中选中的文本或是输入的文本

IDC_EDIT_TEST

CString m_szEdit

来源:https://www.tulaoshi.com/n/20160219/1600644.html

延伸阅读
标签: excel
Excel怎么进行数据隐藏 Excel数据很多都是不希望被别人看到的,我们只希望对方看到我们希望看到的内容,这个时候我们就需要对数据进行隐藏。 隐藏单元格内容 选中要隐藏内容的单元格区域,右击选择设置单元格格式,在数值选项卡的分类列表中选择自定义,在类型输入框中输入三个半角的分号;;;,再切换到保护选项卡下,单击选...
标签: 办公软件
    Excel 2000 新增的在对话框中输入区域引用可以折叠的按钮,这样用户在工作表上选定所需的区域时,对话框就不会阻挡视线。对这类对话框的操作是,在折叠按钮上单击可以将其折叠,再次单击则返回到对话框,图2-9和图2-10分别显示了折叠前后的效果。
问:程序是基于对话框的,我显示两个对话框,一个在另一个后面,下面是我的做法: CMyApp::InitInstance () { ... CMyDialog1 dlg1; m_hMainWnd = &dlg1; int result = dlg1.DoModal (); CMyDialog2 dlg2; result = dlg2.DoModal (); ... } 在上面的代码中,首先一个对话框得到了适当地调用...
1、意图 有时候我们希望将非模态窗口显示为模态窗口。比如在IE的“文件”菜单下选择“打印”,弹出的“打印”对话框就是非模态的(也许我们不太清楚Microsoft的设计意图,一般来说这里的“打印”对话框应该是模态的)。这种情况下如何将“打印”对话框显示为模态的呢(这个对话框对我们来说是Black Box)? 2、简单实现 简单...
标签: Web开发
如果我们需要通过触发事件得到数据行的信息,可以用脚本了来实现,下面是单击数据行得到行信息的代码: function db(index) {     var str = new String("");     var curTRObj = this.Rows[index].Control;     //var column=this.column.lengh;     for ...