MFC对话框学习笔记(2)
来源:互联网 发布:linux升级python2.7 编辑:程序博客网 时间:2024/05/17 23:22
对话框的创建已经告一段落了,现在我们要做的就是让对话框为我们处理一些实在的事情,例如添加一些看控件、消息。说道控件这里我们不得不说MFC中的DDX(DIALOG DATA EXCHANGE)对话框数据交换技术,通过控件与成员变量的绑定,从而达到用成员变量操作控件的目的。
DDX技术主要几个函数如下:
1、DDX_CONTROL将控件与控件的类变量绑定。
2、DDX_TEXT 将控件与值类型的变量绑定。
3、DoDataExchange 数据交换函数,一个CWnd 类的成员函数。利用DDX_CONTROL与DDX_TEXT两个函数进行控件与变量的绑定
4、UpdateData数据更新函数,参数为FALSE表示将变量的值传递给控件,参数为TRUE表示将控件的值更新给变量
有了这几个函数,下面我们来看下MFC中是怎样做到绑定的。在你的对话框进行初始化的时候,会调用OnInitDialog函数,这个在上一节有提到,你这个函数内部要需要调用父类的的OnInitDialog函数,因为你需要保证其父类的正常初始化,在CDialog类的OnInitDialog函数中会调用UpdateData函数,这个函数是不是很熟悉呢?对了就是数据更新函数。在数据更新函数内部会调用DoDataExchange函数,而这个函数是一个成员虚函数,如果你有利用DDX_CONTROL与DDX_TEXT将控件进行了绑定,那么程序就会回到你自己重载的虚函数中,然后通过DDX_CONTROL以及DDX_TEXT进行绑定,DDX_TEXT中就是利用AfxGetWindowText和AfxSetWindowText对控件的值进行获取和设置。而Update的参数就决定了数据的更新方向。这次数据更新是在对话框初始化的时候自动调用的,以后在其他的方法中如果你想要获取或者设置控件的值,便自己调用数据更新函数即可。除了DDX技术之外,还有一个对话框数据校验,但是这个校验只能实现基本的功能因此这里只是提下,后面代码中有体现。
对话的消息处理是利用MFC的消息映射机制,这个后面再说,如果想要在其他的地方调用对话框,就只要用上一篇的创建方式就行了,记得去掉m_pMainWnd=...这句,这句是设定当前程序的主窗口的,以下是主要代码:
增加成员变量:CButton m_wndOk
增加数据交换虚函数:public:virtual void DoDataExchange(CDataExchange* pDX){DDX_CONTROL(pDX,(控件的ID),CButton(要绑定控件的类型))}
数据校验技术 :DDV_MinMaxInt(pDX,m_nWidth,1,20) 表示这个控件中输入的值在1到20之间不然会报错
如果还要绑定其他的控件,利用跟这个方式就可以添加了。。。。
- MFC对话框学习笔记(2)
- MFC对话框学习笔记
- MFC学习笔记(1)--对话框
- MFC笔记1:对话框学习
- Mfc 对话框学习笔记(1)
- MFC学习笔记之-对话框
- MFC学习笔记之对话框
- VC++学习笔记2--------------如何给MFC对话框添加背景图片
- VC++学习笔记2--如何给MFC对话框添加背景图片
- MFC对话框编程详细学习笔记
- MFC学习笔记--打开文件对话框
- [MFC学习笔记]--对话框的设计
- [MFC学习笔记]--lesson8 对话框的设计
- 基于对话框的MFC学习笔记
- MFC学习笔记3_消息对话框
- MFC学习笔记之对话框调用
- MFC学习:基于对话框(2)
- MFC学习笔记——对话框:路径选择对话框(BROWSEINFO)
- 1009. Product of Polynomials (25)
- 开启十年读书博客,看到硬币的另一面
- 图标字体下线生成
- 使用assembly将maven项目pom.xml中的jar包打包
- android小功能实现之简单数据持久化保存(SharedPreferences)
- MFC对话框学习笔记(2)
- Python代码中中文报错问题解决
- 【BZOJ3889】【Usaco2015 Jan】Cow Routing 双键值最短路
- C/C++的预编译和宏定义
- JGroups学习(一)
- poj-3816 Treats for the Cows 【区间DP】
- POJ 1328-Radar Installation
- 1.8 OpenGL及其废弃机制
- AccelerometerSensor--- shake案例