CDataExchange()
来源:互联网 发布:恐怖电影推荐 知乎 编辑:程序博客网 时间:2024/04/29 09:13
当程序需要交换数据时,不要直接调用DoDataExchange函数,而应该调用CWnd::UpdateData。UpdataData函数内部调用了DoDataExchange。该函数只有一个布尔型参数,它决定了数据传送的方向。调用UpdateData(TRUE)将数据从对话框的控件中传送到对应的数据成员中,调用UpdateData(FALSE)则将数据从数据成员中传送给对应的控件。
在缺省的CDialog::OnInitDialog中调用了UpdateData(FALSE),这样,在对话框创建时,数据成员的初值就会反映到相应的控件上。若用户是按了OK(确定)按钮退出对话框,则对话框认为输入有效,就会调用UpdataData(TRUE)将控件中的数据传给数据成员。
对于这个函数,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中。
void CUserDialog::DoDataExchange(CDataExchange* pDX)
{
}
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);//将变量的值传给控件
- CDataExchange()
- CDataExchange说明
- 说说DoDataExchange(CDataExchange* pDX)
- DoDataExchange(CDataExchange *pDX)
- 说说DoDataExchange(CDataExchange* pDX)
- 说说DoDataExchange(CDataExchange* pDX)
- DoDataExchange(CDataExchange *pDX) 详解
- DoDataExchange(CDataExchange *pDX);
- MFC中的DoDataExchange(CDataExchange *pDX)
- MFC中的DoDataExchange(CDataExchange *pDX)
- CDataExchange::PrepareCtrl(int nIDC)里出错 解决
- DoDataExchange(CDataExchange* pDX) 如何被调用的
- CDataExchange::PrepareCtrl(int nIDC)里出错 解决
- CDataExchange::PrepareCtrl(int nIDC)里出错 解决
- virtual void DoDataExchange(CDataExchange* pDX);这句是干什么用的?
- 如果重写对话框的OnInitDialog()函数,如何保证DoDataExchange(CDataExchange* pDX)依然有效?
- Java抽象类的理解
- 被我们误读的诗句《静夜思》
- 移动测试人员的未来:测试开发技术的融合
- Pinterest开源图片下载和缓存框架--PINRemoteImage
- iOS中几种数据持久化方案-1
- CDataExchange()
- Android4.4深入浅出之SurfaceFlinger与Client通信框架(一)
- 字符串截取[模型三]
- leetcode 081 —— Maximal Rectangle
- jqGrid对于查询事件后响应的ReloadGrid中必要的添加
- 算法面试题-- 连接树的所有兄弟节点
- hdoj 超级楼梯 2041
- C++实现串口通信
- c++ const关键字至少有下列n个作用