因为给大家的例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的。大家用过VC++ 6.0的可能记得,我们定义的对话框类都是从CDialog类派生的,但在VS2010中,一般对话框类都是继承自CDialogEx类。
创建对话框类
如果是自己新添加的对话框模板,怎样为它创建对话框类呢/p>
1.首先按第六讲:创建对话框模板和修改对话框属性中说的那样,在Resource View的“Dialog”节点上右键,然后在右键菜单中选择“Insert Dialog”创建一个新的对话框模板,ID就使用默认的IDD_DIALOG1。
2.在中间区域会显示新建的对话框模板,然后选中此对话框模板,点右键,在右键菜单中选择Add Class。

4.最后点“Finish”完成。
最终你就可以在Class View中看到新生成的对话框类CMyDialog了,并且在Solution Explorer中有相应的MyDialog.h头文件和MyDialog.cpp源文件生成。CMyDialog类同样派生于CDialogEx类。
注意,一般类名都以C打头,又比如,CTestDlg。
为对话框中的控件添加变量
2.我们想为其添加值变量而不是控件变量,所以对话框中“Category”下的组合框中选择Value。
4.在“Variable name”中写入自定义的变量名。鸡啄米为其取名m_editSummand。

5.点“Finish”完成。
注意,类的成员变量名一般以m_打头,以标识它是一个成员变量。
对话框类的数据交换和检验
C++代码
void CAdditionDlg::DoDataExchange(CDataExchange* pDX){// 处理MFC默认的数据交换CDialogEx::DoDataExchange(pDX);// 处理控件IDC_SUMMAND_EDIT和变量m_editSummand之间的数据交换DDX_Text(pDX, IDC_SUMMAND_EDIT, m_editSummand);// 处理控件IDC_ADDEND_EDIT和变量m_editAddend之间的数据交换DDX_Text(pDX, IDC_ADDEND_EDIT, m_editAddend);// 处理控件IDC_SUM_EDIT和变量m_editSum之间的数据交换DDX_Text(pDX, IDC_SUM_EDIT, m_editSum);}
但是这种数据交换机制中,DoDataExchange()并不是被自动调用的,而是需要我们在程序中调用CDialogEx::UpdateData()函数,由UpdateData()函数再去自动调用DoDataExchange()的。
CDialogEx::UpdateData()函数的原型为:
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
参数:bSaveAndValidate用于指示数据传输的方向,TRUE表示从控件传给变量,FALSE表示从变量传给控件。默认值是TRUE,即从控件传给变量。
返回值:CDialogEx::UpdateData()函数的返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE。
在下一讲中将具体演示CDialogEx::UpdateData()函数如何使用。
本节主要讲的是新建对话框类和添加控件变量,控件的消息处理函数将在下一讲详细介绍。
点击获取更多教程资源>>

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!