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之间不然会报错

如果还要绑定其他的控件,利用跟这个方式就可以添加了。。。。

0 0
原创粉丝点击