VBSendMessage函数参数详解.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB SendMessage函数参数详解 Sen dMessage 函数原形 Declare Function SendMessage Lib user32 Alias ,,SendMessageA, (By Vai hwnd As Long, By Vai wMsg As Long, By Vai wParam As Long, IParam As Any) As Long 四个参数的含义和说明如下: hWnd: 对象的句柄。希望将消息传送给哪个对彖,就把该对彖的句柄作为实参传送,在VB中可以简单-地用 “对象.hWnd”获得某个对象的句柄,如Textl.hWnd和Forml.hWnd分别可以得到Text 1和Forml的句柄。 它是一个长整型数。Windows给每个控件一个编号,这个编号就称为窗口句柄。冇了这个句柄,我们就可 告诉Windows我们耍控制哪个控件,所以这个句柄在API调用中至关重耍。VB的人多数控件都包括 hwnd屈性,如下拉框、TreeView等,窗体也有这个屈性。但也有一些控件没有这个属性,如标签控件。没 有这个属性就无法利用Windows API函数,但可以节省系统资源。 wMsg: 被发送的消息。根据具体需求和不同的对象,将不同的消息作为实参传送,以产生预期的动作。使 SendMessage传递消息,大多是为了完成以下几个工作: 设置控件的一些选项,彖我们要使用的CB_SETDROPPEDWIDTH的就展于这种情况。尽管VB的每个 控件都提供了许多属性,但仍然有许多控件的选项没有包括在其中。而这些选项中的大多数都可以利用该 函数进行设置 获得控件的一些设置。同上一种惜况相反,冇时我们需要获得控件的一些设置,相当于读取属性。 例如,如果想知道一个下拉框的下拉部分的宽度是多少,就可以向控件发送CB_GETDROPPEDWIDTH消息。 对于这种情况,SendMessage萌数的返冋值就是结果。 执行一定的操作。例如,我们要在下拉框中寻找是否有“ABC”这个字符串,当然,我们可以编写 一个循环,逐条比较看是否存在这样的字符串。如果使用API,我们只需要向下拉框发送CB_FINDSTRING 消息,这条消息就会自动进行查找工作并返回结果。 模拟用户操作。我们冇时希望模拟用户的操作,比如关闭其他应用程序的窗口。其实只耍我们能知 道那个窗口的句柄,我们就可以发送WM.CLOSE消息给那个窗口,窗口接受到这条消息就会关闭,如同用 户关闭窗口一样 wParam 4」Param: 附加的消息信息。这两个是可选的参数,用來捉供关于wMsg消息更多的信息,不同的wMsg可能使 用这两个参数中的0、1或2个,如果不需要哪个附加参数,则将实参赋为NULL (在VB中赋为0)。IParam 定义为Any类型。指定Any类型可禁止VB进行类型检査,从而允许将任意数据类型传递给该过程。由于 每条消息対参数的类型和传递方式的要求都不同:有的可能要求为Long型,有的可能要求为自定义类型; 大多数要求按传值方式传递,但也有一些要求按传地址方式。为了满足各种要求,我们将这个参数定义为 Any类型。比如,我们要传递一个Long型变量IData。如果消息要求传地址方式传递,可以使用: SendMessage , I Data 而如果要求传值方式传递,则使用 SendMessage , By Vai I Data 如果传递常数,我们则需要使用类型后缀来指定常数的类型,比如”0爲表示Long型的常数0,如 SendMessage By Vai 0 我们也可以使用类型转换函数CLng将常数指定为Long型,如CLng(O)。 程序中,有时定义IParam As Any,有时定义By Vai IParam As String.,这是为什么呢对于 SendMessage函数,IParam的使用是很灵活的,在一般情况下,IParam是一个指针,它指向的数据类型有 三种:长整形、口定义数据结构类型、字符串类型。对于前两种类型,需要将IParam定义为IParamAsAny, 从而将IParam数据的指针传递到SendMessage函数。对于字符串类型,则需要定义Byval I Pa ram As String,因为字符串类型数据不同,只有定义ByVai,得到的才是字符串的指针,如果没有ByVai,得到的将 是指向字符串指针的指针。另外对于少数的消息來说,SendMessage函数需要的只是IParam本身的值,这 时就需要将IParam定义为Byval IParam As Long,或者在程序调用时在IParam之前加By Vai 当用户在编辑控件上进行各种操作时,共父窗口将收到WM_COMMAND通知消息,IParam带控件句 柄 (hWnd)

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档