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

本文详细介绍了在Windows程序设计中基于对话框的控件访问的三种方法,包括消息驱动方法、SendMessage函数使用及SendDlgItemMessage函数的结合应用,通过实例演示了如何在对话框中进行控件文本的获取与设置。
摘要由CSDN通过智能技术生成

在对话框控件访问的七种方法(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程序的内部运行机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值