sendmessage函数的常用消息及其应用

sendmessage函数的常用消息及其应用

ID:15132877

大小:91.00 KB

页数:34页

时间:2018-08-01

sendmessage函数的常用消息及其应用_第1页
sendmessage函数的常用消息及其应用_第2页
sendmessage函数的常用消息及其应用_第3页
sendmessage函数的常用消息及其应用_第4页
sendmessage函数的常用消息及其应用_第5页
资源描述:

《sendmessage函数的常用消息及其应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SendMessage函数的常用消息及其应用SendMessage函数的常用消息及其应用(剽窃)--转文本框控件通常用于输入和编辑文字。它属于标准Windows编辑控件的一个子类,所以它支持所有编辑控件消息?这儿讲述的技术也适用于由其他厂商设计的,以Windows编辑控件类为基础的其他控件?函数原型:DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,_ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong其中四个参数的含义和说明如下:1.hWn

2、d:  对象的句柄。希望将消息传送给哪个对象,就把该对象的句柄作为实参传送,在VB中可以简单地用“对象.hWnd”获得某个对象的句柄,如Text1.hWnd和Form1.hWnd分别可以得到Text1和Form1的句柄。它是一个长整型数。Windows给每个控件一个编号,这个编号就称为窗口句柄。有了这个句柄,我们就可告诉Windows我们要控制哪个控件,所以这个句柄在API调用中至关重要。VB的大多数控件都包括hwnd属性,如下拉框、TreeView等,窗体也有这个属性。但也有一些控件没有这个属性,如标签控件。没有这个属性就无法利用WindowsAPI函数,但可以节省系统资源。2.wMs

3、g:  被发送的消息。根据具体需求和不同的对象,将不同的消息作为实参传送,以产生预期的动作。使SendMessage传递消息,大多是为了完成以下几个工作:  ①设置控件的一些选项,象我们要使用的CB_SETDROPPEDWIDTH的就属于这种情况。尽管VB的每个控件都提供了许多属性,但仍然有许多控件的选项没有包括在其中。而这些选项中的大多数都可以利用该函数进行设置?  ②获得控件的一些设置。同上一种情况相反,有时我们需要获得控件的一些设置,相当于读取属性。例如,如果想知道一个下拉框的下拉部分的宽度是多少,就可以向控件发送CB_GETDROPPEDWIDTH消息。对于这种情况,SendMe

4、ssage函数的返回值就是结果。  ③执行一定的操作。例如,我们要在下拉框中寻找是否有“ABC”这个字符串,当然,我们可以编写一个循环,逐条比较看是否存在这样的字符串。如果使用API,我们只需要向下拉框发送CB_FINDSTRING消息,这条消息就会自动进行查找工作并返回结果。  ④模拟用户操作。我们有时希望模拟用户的操作,比如关闭其他应用程序的窗口。其实只要我们能知道那个窗口的句柄,我们就可以发送WM_CLOSE消息给那个窗口,窗口接受到这条消息就会关闭,如同用户关闭窗口一样?3.wParam、4.lParam:  附加的消息信息。这两个是可选的参数,用来提供关于wMsg消息更多的信息

5、,不同的wMsg可能使用这两个参数中的0、1或2个,如果不需要哪个附加参数,则将实参赋为NULL(在VB中赋为0)。  lParam定义为Any类型。指定Any类型可禁止VB进行类型检查,从而允许将任意数据类型传递给该过程。由于每条消息对参数的类型和传递方式的要求都不同:有的可能要求为Long型,有的可能要求为自定义类型;大多数要求按传值方式传递,但也有一些要求按传地址方式。为了满足各种要求,我们将这个参数定义为Any类型。比如,我们要传递一个Long型变量lData。如果消息要求传地址方式传递,可以使用:SendMessage……,lData  而如果要求传值方式传递,则使用SendM

6、essage……,ByVallData  如果传递常数,我们则需要使用类型后缀来指定常数的类型,比如"0&",表示Long型的常数0,如SendMessage……,ByVal0&  我们也可以使用类型转换函数CLng将常数指定为Long型,如CLng(0)。  程序中,有时定义lParamAsAny,有时定义ByVallParamAsString。这是为什么呢?对于SendMessage函数,lParam的使用是很灵活的,在一般情况下,lParam是一个指针,它指向的数据类型有三种:长整形、自定义数据结构类型、字符串类型。对于前两种类型,需要将lParam定义为lParamAsAny,从

7、而将lParam数据的指针传递到SendMessage函数。对于字符串类型,则需要定义ByvallParamAsString,因为字符串类型数据不同,只有定义ByVal,得到的才是字符串的指针,如果没有ByVal,得到的将是指向字符串指针的指针。另外对于少数的消息来说,SendMessage函数需要的只是lParam本身的值,这时就需要将lParam定义为ByvallParamAsLong,或者在程序调用时在lParam之前加ByV

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。