简要
在上篇的文章里简要说了一下使用 Win32 API 函数 GetDlgItemInt 来获得编辑框中的输入数值,本篇文章中将使用MFC中 交换和验证机制 也叫做 DDX 。
下载
正文
新建一个工程
取名为 MyThirdPro ,使得界面和 上篇的文章基本一样。见图:
添加DDX
具体方法可见下图过程:
使用同样的方法完成 编辑框1 和 编辑框3 变量绑定。
检查代码
在完成之后会发现在工程CXXXDlg.h 和 CXXXDlg.cpp 会被修改。
具体修改的代码可以看到,如下图所示:
关于DDX 的讲法我在这里找到了我个人认为一篇不错的文章,在这里就引用一下:MFC的DDX和DDV技巧._jianglm_新浪博客
在他的博客中写的比较好的有:
“DDX将数据成员变量同对话类模板内的控件相连接,这么就使得数据在控件之间很轻率地传输。”
“UpdateData(FALSE) 数据由控件相干的成员变量向控件传输”
“UpdateData(TRUE)或参数为空 数据从控件向相干联的成员变量复制。”
添加代码
这次使用的是编辑框的被改变事件 。具体的添加步骤如下图所示:
添加代码
UpdateData(TRUE); m_iEdit3 = m_iEdit1 * m_iEdit2; UpdateData(FALSE);
以同样的方法添加 编辑框2 的 编辑框的被改变事件 。UpdateData 函数详解请见: http://baike.baidu.com/view/1219734.htm整体代码为:void CMyThirdProDlg::OnEnChangeEdit1() { UpdateData(TRUE); m_iEdit3 = m_iEdit1 * m_iEdit2; UpdateData(FALSE); } void CMyThirdProDlg::OnEnChangeEdit2() { UpdateData(TRUE); m_iEdit3 = m_iEdit1 * m_iEdit2; UpdateData(FALSE); }
编译运行
思考与反思
当在 添加DDX 的时候,在选择“变量类型”的时候,本篇所选择的是int,在那个时候是不是可以选择其他的选择呢?如果选择了会有什么样的结果呢?