UpdateData(TRUE/FALSE)以及DoDataExchange的使用

这里我们说一下成员函数UpdateData。该函数带有一个布尔类型的参数,如果该参数为FALSE,函数UpdateData将成员变量的值传递给对话框的变量;而如果该参数为TRUE,函数UpdateData将进行相反的过程。

如果用户单击了对话框中ID为IDOK的按钮,或者以TRUE为参数调用函数UpdateData,DDX机制从控件中将值传递到成员变量,同时对话框数据验证(dialog data validation,DDV)机制根据设定的验证规则验证所有数据项。在数据交换的过程中,成员函数UpdateData先创建一个CDataExchange对象,然后调用对话框对类类CDialog成员函数DoDataExchange的重载版本。该CDataExchange对象将作为成员函数DoDataExchange的一个参数,该参数定义了数据交换的上下文。在DoDataExchange中,我们为每一个数据成员指定了一个对DDX函数的调用。每一个函数定义了基于由成员函数UpdateData所提供的
CDataExchange参数所确定的上下文而进行的双向数据交换。

下面的代码摘自实现文件DialogDemo.cpp中对函数DoDataExchange的
定义:
void CDialogDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogDemoDlg)
DDX_Text(pDX, IDC_EDIT, m_strEdit);
DDV_MaxChars(pDX, m_strEdit, 50);
//}}AFX_DATA_MAP
}

在两行注释//{{AFX_DATA_MAP和//}}AFX_DATA_MAP之间的代码部分称作数据映射。函数DDX_Text使用CString对象m_strEdit与ID为IDC_EDIT的编辑框控件相关联。函数DDV_MaxChars设置与编辑框控件IDC_EDIT相关联CString对象m_strEdit的最大长度为50。

需要注意的是,如果用户在模式对话框中单击了“取消”(Cancel)按钮,DoModal函数将返回值IDCANCEL,在这种情况下,在对话框和对话框对象之前的数据交换不会发生。

 

转载于:https://my.oschina.net/u/3874841/blog/2988396

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值