Windows程序设计 对话框控件访问的七种方法(2)
在对话框控件访问的七种方法(1)中介绍了对话框空间访问的第一类方法,下面介绍对话框控件访问的第二类方法:
在Windows程序设计中,基于对话框的程序设计,对对话框上控件的访问有多种方法。在这里我总结七种方法,但这七种方法我可以把他们分为三大类。下面通过一个小示例演示对话框控件访问的几种方法:
上图为一个小的对话框应用程序的示例程序,实现的功能是:分别在Number1和Number2所标示的编辑框中输入数字,当点击Add按钮时,将Number1和Number2所标示的编辑框中的数字进行相加,将求和结果写到Number3所标示的编辑框中。
要想将两个编辑框中的数字进行相加,首先要定位到对应的控件,然后获取控件上的文本,最后输出到第三个编辑框控件上。下面就具体介绍几种访问控件的方法:
第二类方法:
第一类的几种方法主要是通过CWnd类的成员函数,访问对话框的控件,然后进行操作。第二类方法主要是通过对控件关联对应的变量或对象,通过对变量和对象的操作访问对话框控件。
在利用MFC进行程序设计时,每一个资源都要与一个特定的类相关联,当我们创建对话框资源时,我们将给对话框资源与一个新的对话框类相关联。AppWizard会程序添加该类的构造函数和成员函数DoDataExchange(),该成员函数用于对话框上控件与相关联的变量或者对象的数据交换。
具体操作如下:
方法4:首先我们通过ClassWizard为对话框上的三个编辑框控件关联三个整形变量,DoDataExchange()函数中系统自动添加的代码如下所示:
DDX_Text(pDX, IDC_EDIT1, m_num1);
DDX_Text(pDX, IDC_EDIT2, m_num2);
DDX_Text(pDX, IDC_EDIT3, m_num3);
DDX_Text()函数完成对话框控件的字符与整形数值之间的转换,然后我们可以直接对其正型变量进行操作,就是对控件的操作:示例代码如下:
UpdateData();
m_num3=m_num1+m_num2;
UpdateData(FALSE);
注意:参考MSDN可知,框架窗口不会自动调用DoDataExchange()函数,该函数是通过 UpdateData()函数来初始化控件和更新控件的,所以在此处要调用 UpdateData()函数。
方法5:在方法4中,对话框上的编辑框控件关联的是正型变量,而MFC为我们封装了编辑框控件的CEdit类,所以我们也可以为编辑框控件关联CEdit对象。
如:CEdit m_edit1;
CEdit m_edit2;
CEdit m_edit3;
DoDataExchange()中添加的代码如下所示:
DDX_Control(pDX, IDC_EDIT3, m_edit3);
DDX_Control(pDX, IDC_EDIT2, m_edit2);
DDX_Control(pDX, IDC_EDIT1, m_edit1);
然后我们就可以用m_edit1对象调用其成员函数,完成控件的访问。示例代码如下所示:
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
m_edit1.GetWindowText(ch1,10);
m_edit2.GetWindowText(ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
m_edit3.SetWindowText(ch3);
以上两种方法是对话框上控件访问的第二类方法:为控件关联对应的变量或对象。在对话框控件访问的七种方法(3)中将介绍第三类方法:发送消息。