Windows程序设计 对话框控件访问的七种方法(3)

在对话框控件访问的七种方法(1)、(2)中介绍了对话框空间访问的第一类和第二类方法,下面介绍对话框控件访问的第三类方法:

在Windows程序设计中,基于对话框的程序设计,对对话框上控件的访问有多种方法。在这里我总结七种方法,但这七种方法我可以把他们分为三大类。下面通过一个小示例演示对话框控件访问的几种方法:

    上图为一个小的对话框应用程序的示例程序,实现的功能是:分别在Number1和Number2所标示的编辑框中输入数字,当点击Add按钮时,将Number1和Number2所标示的编辑框中的数字进行相加,将求和结果写到Number3所标示的编辑框中。

    要想将两个编辑框中的数字进行相加,首先要定位到对应的控件,然后获取控件上的文本,最后输出到第三个编辑框控件上。下面就具体介绍几种访问控件的方法:

第三类方法:

Windows程序都是基于消息的,编辑框也属于窗口。我们可以通过向操作系统发送WM_GETTEXTWM_SETTEXT消息,来获得控件上的文本与设置控件上的文本。从而访问对话框控件。

方法6:

    我们可以调用Windows的API函数::SendMessage()来发送WM_GETTEXT和WM_SETTEXT消息。当然我们也可以调用CWnd类的成员函数来发送WM_GETTEXT和WM_SETTEXT消息,原因是编辑框控件也属于窗口。具体实现如下:

int num1,num2,num3;
 char ch1[10],ch2[10],ch3[10];

 //::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);
 //::SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);
 //GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
 m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
 m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)ch2);

 num1=atoi(ch1);
 num2=atoi(ch2);
 num3=num1+num2;
 itoa(num3,ch3,10);

 m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);

方法7:

    上述的方法6中的通过调用CWnd类的成员函数SendMessage()函数来发送消息时,都要先获得控件的指针或者用与控件相关联的对象调用其成员函数。我们也可以用CWnd类的另一个成员函数SendDlgItemMessage()函数来发送消息,这个函数可以看成是方法6的两个步骤的结合。例如:

int num1,num2,num3;
 char ch1[10],ch2[10],ch3[10];

 SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
 SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);

 num1=atoi(ch1);
 num2=atoi(ch2);
 num3=num1+num2;
 itoa(num3,ch3,10);

 SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);

    以上的七种方法是访问控件的几种常用方法。第一类方法:先获得对话框控件的指针人后调用CWnd的成员函数访问控件是最主要最基本的访问方法。第二类方法:通过关联变量或对象,可以简化代码的书写,是一种聪明的访问方法。第三类方法:发送消息,这需要对Windows程序的运行机制比较熟悉,有利于理解Windows程序的内部运行机制。

posted @ 2011-09-13 14:18  乘风736  阅读(990)  评论(0编辑  收藏  举报